Переход на другую страницу в php: - PullRequest
0 голосов
/ 12 ноября 2011

Я использую эту функцию для перехода на другую страницу:

define('WEB_ROOT', '/');
function redirect($location) 
{
    header('Location: ' . WEB_ROOT . $location);
    die();
}

И я доставляю его по следующему адресу:

   $lastPageTransfer=$_SERVER["SCRIPT_NAME"]."?threadID=".$threadID."&page=".$pager->MaxPage;
    redirect($lastPageTransfer);

Неважно, что переменные get .. что я получаю, это:

http://politicalforum/Thread/thread.php%20%20%20?threadID=23&page=4

когда навигация завершится, и я получаю сообщение об ошибке от Google, в котором говорится, что страница не найдена.

Но я заставлю его работать, если я добавлю $ lastPageTransfer в атрибут ссылки <a href=...

http://localhost/PoliticalForum/Thread/thread.php%20%20%20%20?page=2&threadID=23

Еще один вопрос: почему генерируется% 20 и как я могу это предотвратить?!?

ОБНОВЛЕНИЕ:

Я понял:

http://localhost/localhost//PoliticalForum/Thread/thread.php?threadID=23&page=5 

когда я делаю это:

$lastPageTransfer=$_SERVER['HTTP_HOST']."/".$_SERVER["SCRIPT_NAME"]."?threadID=".$threadID."&page=".$pager->MaxPage;

Ответы [ 2 ]

0 голосов
/ 12 ноября 2011

% 20 - это кодированный пробел.Вы избегаете этого, не имея пробелов в своих ссылках.

Что касается ссылки, я сделаю снимок, что вы не указали имя хоста:

http://politicalforum/Thread/thread.php%20%20%20?threadID=23&page=4
      ^

, которое может быть:

http://www.example.com/politicalforum/Thread/thread.php%20%20%20?threadID=23&page=4
       ^^^^^^^^^^^^^^^

Were www.example.com должно быть вашим именем хоста.В случае, если вы используете его в ссылке, он автоматически включает localhost в качестве имени хоста.Это связано с тем, что при использовании <a href.. вам не нужно указывать полные пути.

Из руководства :

HTTP / 1.1 требуется абсолютный URI в качестве аргумента для »Местоположение: , включая схему, имя хоста и абсолютный путь, но некоторые клиенты принимают относительные URI.Обычно вы можете использовать $ _SERVER ['HTTP_HOST'], $ _SERVER ['PHP_SELF'] и dirname (), чтобы самостоятельно создать абсолютный URI из относительного

0 голосов
/ 12 ноября 2011

Это называется кодированием / экранированием URL. Чтобы это исправить, вам нужно unescape URL.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...