除非您刷新页面两次,否则PHP不会执行一行代码

时间:2013-11-08 19:03:29

标签: php drupal iframe cookies

我正在尝试让一个网站同时拥有Wix和独立的桌面版本。但是,当这个网站加载到Wix iFrame时,我遇到了Wix版本的问题。

当IF语句为真时,用户应自动被重定向,这意味着如果您在Wix iFrame中访问此网站,则必须执行以“header”开头的代码行,因为IF语句返回true。 / p>

 if(isset($_GET[ 'instance' ], $_GET[ 'siteUrl' ], $_GET['locale']))
{       
    $value = 1;
    setcookie("IsWixUser", $value, time()+3600);
    header('Location: app.php?show=social_manager');
}
else
{
    $value = -1;
    setcookie("IsWixUser", $value, time()+3600);
}

当您第一次使用Wix加载我的网站时,情况并非如此,首先不使用任何cookie。使用firebug我可以检查资源并看到cookie“IsWixUser”已正确执行以保存$ 1值,因此setcookie()第一次完美运行,但浏览器只是决定跳过header()函数并且根本不执行。

header()函数仅在刷新整个Wix页面以重新加载iFrame后才起作用,最后header()函数仅在cookie“IsWixUser”过去设置为1时才有效。

这可能只是Drupal的一个问题吗?您在上面看到的那行代码位于Drupal的index.php的顶部。

2 个答案:

答案 0 :(得分:2)

您的问题是,一旦发送了任何其他标头(即Cookie),您就无法使用Location标头重定向浏览器。删除cookie设置行,您将被重定向。

干杯

答案 1 :(得分:0)

我不是说这是你问题的答案,但如果你确定你正在做的一切正确,请尝试使用PHP的headers_sent功能。如果没有,它至少会让你知道发生了什么。

例如:

if (!headers_sent()) {
  header('Location: http://www.example.com/');
  //exit;
}

尝试将整个网址提供给Location,例如http://....。 Drupal以有趣的方式工作,这两件事中的一件可能会有所帮助。