首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PHP会话不能正常工作,可能是因为fb?请帮帮忙

PHP会话不能正常工作,可能是因为fb?请帮帮忙
EN

Stack Overflow用户
提问于 2011-06-12 13:53:50
回答 1查看 707关注 0票数 0

我有一个关于PHP会话的问题。我使用一个会话来让访问者登录。我以前用这个做过一个网站,而且工作很完美。现在我正在制作一个Facebook应用程序。

登录时(检查用户是否在数据库中注册),我注册id。在此之后,我使用:

代码语言:javascript
复制
if(session_is_registered("id"))
{
echo "Logged in";
}

因此,如果它在浏览器中显示“登录”,我绝对相信会话已经注册。但是,当我转到下一页(其中有session_start();在页面顶部)时,就没有会话了。但是,如果我转到注销页面(使用session_destroy();),然后继续登录,则会话将正确注册。另外,如果我关闭所有的浏览器窗口,然后进入登录,它将无法正确注册。

我试着在注册'id‘之前销毁会话,但这也不起作用。

我猜我犯了一个基本错误,所以这里的人应该可以在不浪费大量时间的情况下帮助我。

请帮帮我。我在这件事上浪费了好几天。提前谢谢。

更多代码:

在已登记会议的地方:

代码语言:javascript
复制
$id_query = mysql_query ("
    SELECT * FROM Tour11_deelnemers WHERE fb_id = '$user'");
    while ($record = mysql_fetch_assoc ($id_query))
        {
        $id = $record['deelnemer_id'];
        }
if($id > 0)
{
$speelid = $id;
session_register("speelid");
}

然后检查它是否已注册:

代码语言:javascript
复制
if(session_is_registered("speelid"))
{
echo "Ingelogd";
}

session_is_registered()与$_SESSION的isset()相同。

所以我不明白的是,虽然session_is_registered()在注册后是真的,但是在下一页上它又是假的:(除非我在登录后立即登录到注销页面(session_destroy();)。因此,即使我在重新启动会话并再次注册之前销毁了该会话,也于事无补。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-06-12 14:13:43

这是你的解决办法。

将会话设置如下:

代码语言:javascript
复制
if(!isset($_SESSION['speelid'])){
   $id_query = mysql_query ("SELECT * FROM Tour11_deelnemers WHERE fb_id = '$user'");
        while ($record = mysql_fetch_assoc ($id_query)){
            $id = $record['deelnemer_id'];
        }
    if($id > 0){
        $_SESSION['speelid'] = $id;
    }
}

检查是否设置了这样的会话:

代码语言:javascript
复制
if(isset($_SESSION['speelid'])){
    echo "Ingelogd";
}

更新

这个问题似乎与>= IE6拒绝接受php生成的会话cookie有关,因为.php文件是从另一个服务器上的.html文件中引用的。

.HTML到.PHP会话IE问题

当在与服务于.php的服务器不同的服务器上使用由框架(.html或其他文件类型)引用的.html文件中的会话变量时: 在这些条件下,IE6或以后都会默默地拒绝尝试创建的会话cookie (通过invoquing session_start()隐式或显式地)。 因此,会话变量将返回一个空值。 根据MS,解决方法是添加一个标头,说明您的远程.php页面不会滥用已授予权限的事实。 将此头放在将创建/更新所需会话变量的.php文件上:

这是关于这个问题的一个完整的主题

解决方案

解决方案是将其添加到页面的顶部,这将设置会话。

代码语言:javascript
复制
<?php header('P3P: CP="CAO PSA OUR"'); ?>
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6322320

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档