如何使用php和ajax自动登录用户时,如何顺利生成html页面内容

how to smoothly generate html page content when auto-logging a user in with php and ajax

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

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

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

接下来我该怎么办?我应该使用ajax生成"登录"或"注销"链接吗?这是有道理的,但我觉得使用ajax生成依赖于用户是否登录的内容可能会在我的某些页面上变得复杂。也许我可以在javascript中重新加载页面?在这个辅助加载上,php会检测用户是否已登录并正确显示页面。两个页面加载之间可能会有一些闪烁。

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

谢谢。


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

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

例:

1
2
3
4
5
6
7
8
9
10
11
12
13
<?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 */ } ?>