它,当我输入
header("Location: http://www.google.com");
,但它并没有当我有
header("Location: $_SERVER['HTTP_REFERER']");
我想重定向的页面,它是从哪里来的任何页面时才起作用。
它,当我输入
header("Location: http://www.google.com");
,但它并没有当我有
header("Location: $_SERVER['HTTP_REFERER']");
我想重定向的页面,它是从哪里来的任何页面时才起作用。
试试::)
if (!empty($_SERVER['HTTP_REFERER']))
header("Location: ".$_SERVER['HTTP_REFERER']);
else
echo "No referrer.";
然而,对于确定哪些页面的用户从,我宁愿使用会话变量,它获取的每一页重置传来:
session_start();
echo "Previous page:", $_SESSION['loc'];
$_SESSION['loc']=$_SERVER['PHP_SELF'];
PS:这只适用于本地网页,您无法追踪其他网站。
这是一个浏览器的功能,任何浏览器有礼貌将发送 正确的标题(尽管各种“安全”的工具将覆盖此 用假引荐)。
这是浏览器特定的,所以不是每个浏览器/安全软件组合都会将它发送到服务器。你关上的每个页面加载设置一个会话变量来确定用户是从哪个页面(或者多一点的逻辑类似的东西)
那么在每个页面上创建一个当前网址的会话? –
你可以尝试更好:
header("Location: {$_SERVER['HTTP_REFERER']}");
我有变量表达式中包含带括号的字符串中的引号的问题。
您还需要注意不要设置$_SERVER['HTTP_REFERER']
。一些用户代理不设置它,一些私有工具掩盖它,并且您需要处理在没有引用者的情况下进入您的页面的人员。
这是一个简单的解决方案。 检查,看看有什么$ _ SERVER [“HTTP_REFERER”]是给你,如果它的设置,那么你可以重定向,如果不把回落的网址是这样的:
if(isset($_SERVER['HTTP_REFERER']) && $_SERVER['HTTP_REFERER'] != ""){
$url = $_SERVER['HTTP_REFERER'];
}else{
$url = "YOUR INDEX PAGE OR SOMETHING";
}
header("Location: ".$url);
只要您可以使用
if(isset($_SERVER['HTTP_REFERER'])){
header("Location:".$_SERVER['HTTP_REFERER']."");
}
header("Location: $_SERVER[HTTP_REFERER]");
没有单引号。这是访问和连接数组值而不用额外连接代码的最快方法。
并不是所有的浏览器都会发送一个引用者,有些引擎会发送伪造的数据。同样,你不能在像这样的双引号字符串中的数组键上使用引号。尝试'header(“Location:{$ _SERVER ['HTTP_REFERER']}”);'而不是。 –
您是否检查过$ _SERVER ['HTTP_REFERER']'的内容? – PeeHaa
这个字符串的输出是什么: echo“Location:$ _SERVER ['HTTP_REFERER']”; ? –