导航到php中的另一个页面:

时间:2011-11-12 10:17:13

标签: php url

我使用该功能导航到另一个页面:

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

我将它发送到以下地址:

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

获取变量是什么并不重要..我得到的是:

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

导航完成后,我收到谷歌的错误,说它无法找到该页面。

但是如果我将$ 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 :(得分:0)

%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
       ^^^^^^^^^^^^^^^

www.example.com应该是您的主机名。如果您在链接中使用它,则自动包含localhost作为主机名。行为来自于使用<a href..时您不需要完整路径。

来自manual

  

HTTP / 1.1 需要绝对URI作为»Location:的参数,包括   方案,主机名和绝对路径,但有些客户接受   相对URI。你通常可以使用$ _SERVER ['HTTP_HOST'],   $ _SERVER ['PHP_SELF']和dirname()从a创建一个绝对URI   相对一个人

答案 1 :(得分:-1)

这称为URL编码/转义。要解决此问题,您需要unescape网址。