0

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

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

 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 时,情况并非如此。使用萤火虫我可以检查资源并看到cookie“IsWixUser”已正确执行以保持$ 1的值,因此setcookie()第一次完美运行,但浏览器只是决定跳过header()函数并且根本不执行。

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

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

4

2 回答 2

2

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

干杯

于 2013-11-08T20:44:25.777 回答
0

我并不是说这是你问题的答案,但如果你确定你做的一切都是正确的,试着使用headers_sentPHP 的功能。如果没有,它至少可以让您了解正在发生的事情。

例如:

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

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

于 2013-11-08T20:22:13.873 回答