PHP中Header转向问题

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手册里面的解释,我就不罗嗦了。

此条目发表在 Programming 分类目录,贴了 标签。将固定链接加入收藏夹。

发表评论

电子邮件地址不会被公开。 必填项已用 * 标注

*

您可以使用这些 HTML 标签和属性: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> <pre lang="" line="" escaped="" highlight="">