仅当是浏览器时才执行PHP头位置


executing PHP header location only if is browser

我的网站出现了外部页面"访问"的问题。问题是在创建cookie时,我的脚本试图在第一次访问时创建cookie。当从外部页面(如W3C)读取页面时,我得到重定向循环。所以我只能在浏览器中执行header("location:*");

不要做特定的案例。一视同仁。你将很难进行"检测"。

在重定向上添加GET参数。当参数存在时,不要再重定向。

并非所有浏览器都会接受cookie。并非所有非浏览器的东西都会拒绝cookie。尝试使用用户代理的类型来猜测它是否会接受您的cookie注定会失败。

改为更改您的工作流程:

  1. 重定向至设置cookie页面
  2. 设置cookie
  3. 重定向至其他"即是即用cookie"页面
  4. 显示错误消息或重定向到他们进入的页面

更好的是,在实际需要cookie之前不要需要cookie(可能是"当用户登录时",而不是"当你想开始收集分析数据时")。请注意,前一句包含了一些较大的假设。

通过使用"用户代理"字符串,您可以很容易地阻止代码在条件语句下执行。

echo $_SERVER['HTTP_USER_AGENT'] . "'n'n";