1

我的 php 页面生成的 html 取决于用户是否登录。例如,如果用户登录,则显示“注销”链接;如果用户未登录,则会显示“登录”链接。

我正在实现自动登录功能。当用户登录时,他们可以选中一个框以使他们保持登录状态。如果他们选中此框,则会创建一个随机 id 并将其存储到 cookie 中,并与他们的用户信息一起存储到数据库中。(它类似于 [此处][1] 中描述的方法。

我正在考虑实现这一点的方式是,如果用户未登录,php 将生成一个 javascript 函数,该函数将从客户端请求 cookie。如果 cookie 不存在,我将在页面上显示“登录”链接或将页面定向到登录屏幕。如果 cookie 存在,我将使用 ajax 将 cookie 传递给 php 脚本并重新登录用户。

接下来我该怎么办?我应该使用 ajax 来生成“登录”或“注销”链接吗?这是有道理的,但我觉得使用 ajax 生成取决于用户是否登录的内容可能会在我的某些页面上变得复杂。也许我可以用javascript重新加载页面?在此二次加载时,php 将检测到用户已登录并适当地显示页面。虽然在两个页面加载之间可能会有一些闪烁。

任何关于如何做到这一点的想法或建议,以使用户感到愉快,我们将不胜感激。

谢谢。

4

1 回答 1

1

如果您仍然使用 PHP 生成页面,为什么不在if ($is_logged_in) {...}php 中进行检查?

只需访问 cookie $_COOKIE['my_autologin_token'],检查它是否有效,然后在开始输出任何 html 代码之前登录用户。

例子:

<?php

$is_logged_in = check_if_has_session();

if (!$is_logged_in AND isset($_COOKIE['my_autologin_token'])) {
    $token = $_COOKIE['my_autologin_token'];
    // get user id from database, based on $token
    // if is valid token/user_id set $is_logged_in = true;
}

?>
// html content start
<?php if ($is_logged_in) { /* "Log out" link */ } else { /* Login link */ } ?>
于 2011-03-25T23:28:36.173 回答