我正在尝试使一个网站同时具有Wix和独立的桌面版本。但是,当此网站加载到Wix iFrame中时,我遇到了Wix版本的问题。
当 IF 语句为 true 时,用户应自动重定向,这意味着如果您在 Wix iFrame 中访问此网站,则必须执行以"header"开头的代码行,因为 IF 语句返回 true。
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 $value,因此 setcookie() 第一次运行良好,但浏览器只是决定跳过 header() 函数并且根本不执行它。
header() 函数仅在刷新整个 Wix 页面以重新加载 iFrame 后才有效,最后 header() 函数仅在 cookie "IsWixUser" 过去设置为 1 时才有效。
这可能只是Drupal的问题吗?你在上面看到的那行代码在索引的顶部.php对于Drupal来说。
您的问题是,一旦任何其他标头(即cookie)被发送,您将无法使用位置标头重定向浏览器。删除 cookie 设置行,您将被重定向。
干杯
我并不是说这是您问题的答案,但是如果您确定自己做对了一切,请尝试使用 PHP 的 headers_sent
函数。如果没有,它至少会让你对正在发生的事情有所了解。
例如:
if (!headers_sent()) {
header('Location: http://www.example.com/');
//exit;
}
尝试将整个 URL 馈送到Location
,就像 http://....
一样。Drupal以有趣的方式工作,这两件事之一可能会有所帮助。