Facebook空白画布页面从php如果$_COOKIE语句


Facebook blank canvas page from php if $_COOKIE statement

我正在使用Facebook Php SDK v3.22,我让JavaScript为我设置了一个用Php读取的cookie

出于某种原因,当我使用 if 语句时,如下所示:

if($_COOKIE['anything'] == 'some_data'){
//do something
}

我的画布页面重定向到空白页面,注销时未捕获错误

我在我的页面信息中看到框架画布页面中没有 cookie,但我有点困惑,因为我使用服务器端 Php 来读取 cookie 以及这如何导致 Facebook 重定向到空白页面当我使用 if cookie 语句时,这是巫术!

我用JavaScript设置我的cookie,如下所示:

<script language="JavaScript" type="text/javascript">
<!--
if (self != top) {;
    var onsite = 'true'; document.cookie = 'domainname.com' + "=" + onsite;
}else{
    var onsite = 'false'; document.cookie = 'domainname.com' + "=" + onsite;
}
-->
</script>

在您的主页上使用以下 JavaScript:

<script type="text/javascript">
// Set cookie function
function setCookie(c_name,value,exdays) {
    var exdate=new Date();
    exdate.setDate(exdate.getDate() + exdays);
    var c_value=escape(value) + ((exdays==null) ? "" : "; expires="+exdate.toUTCString());
    document.cookie=c_name + "=" + c_value;
}
// Set the cookie
var onsite = 'false',
    domain = 'domainname.com';
if (self != top) {
    onsite = 'true';
}
setCookie(domain, onsite);
</script>

你的PHP脚本将看起来像这样:

<?php
// Test cookie
$domain = 'domainname.com';
if (isset($_COOKIE[$domain])) {
    if ($_COOKIE[$domain] == 'true') {
        // domainname.com is equal to 'true'
    } else {
        // domainname.com is NOT equal to 'true'
    }
} else {
    // cookie is not set yet
}
?>

*请注意,如果您尝试在设置之前读取cookie,它将无法真正起作用。