【发布时间】:2011-06-13 03:37:32
【问题描述】:
我有一个关于 PHP 会话的问题。我使用会话来保持访问者的登录状态。我之前已经用它制作了一个网站并且效果很好。现在我正在制作一个 Facebook 应用程序。
登录时(检查用户是否在数据库中注册),我注册id。之后我使用:
if(session_is_registered("id"))
{
echo "Logged in";
}
因此,如果它在浏览器中显示“已登录”,我绝对确定会话已注册。但是当我转到下一页(页面顶部有 session_start(); )时,不再有会话。但是,如果我转到注销页面(使用 session_destroy();),然后继续登录,则会话已正确注册。另外,如果我关闭所有浏览器窗口然后登录,它也不会正确注册。
我尝试在注册“id”之前销毁会话,但这也不起作用。
我猜我犯了一个基本错误,所以这里的人应该能够帮助我而不会浪费很多时间。
请帮助我。我在这上面浪费了好几天。 提前致谢。
更多代码:
会话在哪里注册:
$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");
}
之后检查是否注册:
if(session_is_registered("speelid"))
{
echo "Ingelogd";
}
session_is_registered() 与 $_SESSION 的 isset() 相同。
所以我不明白的是,虽然 session_is_registered() 在注册后是真的,但在下一页它又是假的:(除非我在退出页面后立即登录 (session_destroy();)。因此,即使我在重新启动会话并再次注册之前销毁会话,也无济于事。
【问题讨论】:
-
请贴一些真实的代码,因为
session_is_registered("id")不够清楚。也许你需要做session_is_registered($_SESSION["id"])?告诉我们session_is_registered()函数的参数是什么,它的作用是什么? -
@Shef
session_is_registered是内置的 PHP 函数,所以不需要解释它是如何工作的 :) -
session_register、session_unregister和session_is_registered不应再使用。 -
你说得对,我不知道这个功能,因为我尽量远离“全局变量”的土地。这个函数好像是deprecated on 5.3。所以,是时候让我们都习惯远离“全局变量”领域了。
-
我还用 $_SESSION['id'] 和 isset 尝试了整个代码......但后来我遇到了同样的问题,所以我用 session_register() 尝试了这个旧版本.所以使用较新的会话内容并没有帮助。
标签: php facebook session login