M6上有人问了一个这样的问题:
header(“Location:$url”)
$url从GET传过来时会转到http://127.0.0.1/$url
谁知道原因?
出现这种转向不正确的原因是通过GET方法获取的URL后缀有可能是不正确的,比如带了其他参数等等,而且指定一个准确的相对地址也不容易,所以我们有必要先获取服务器URL,然后再获取后面的字符串地址,再加上我们需要访问的文件名
主要代码如下:
<?php /* Redirect to a different page in the current directory that was requested */ $host = $_SERVER['HTTP_HOST']; $uri = rtrim(dirname($_SERVER['PHP_SELF']), '/\'); $extra = 'mypage.php'; header("Location: http://$host$uri/$extra"); exit; ?>
PHP手册中也有讲到,具体请点击:PHP手册
最后解释一下为什么要用rtrim()方法,这样做是为了过滤一些被编码的URL,比如查询符号“?”等,具体用法请参考PHP手册里面的解释,我就不罗嗦了。