我使用该功能导航到另一个页面:
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;
答案 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网址。