1

我在我的网站上有持久登录,因此如果用户在登录过程中检查“记住我”,请设置 cookie 以使用户在该浏览器中始终保持活动状态..

有两种访问任何页面的途径。如果不是 ajax 请求,则请求通过 index.php,但如果请求是 ajax,它只是通过 ajax.php。

为了处理用户请求,我首先检查会话是否存储了用户ID,如果会话持有用户没有问题,请求就会完成。但是如果会话中没有当前用户ID,我检查了cookie以进行自动登录,如果我可以通过cookie登录用户,则强制使用cookie数据自动登录,并在用户不做任何事情时使用用户ID设置会话..

现在要处理它,我在 index.php 和 ajax.php 的顶部执行相同的过程,如下所示;

class SessionManager
{
    private function __construct()
    { ; }

    public static function getSessionUser()
    {
        $user = NULL;

        if(isset($_SESSION['user']))
            $user   = $_SESSION['user'];
        else
        {


 /* Get username from cookie, and login it and set Session with user if it's possible otherwise do nothing Session is empty */
            getUserFromCookie();
            if(isset($_SESSION['user']))
                $user   = $_SESSION['user'];
        }

        return $user;
    }
}

在 index.php 中;

$user = SessionManager::getSessionUser();

if(!isset($user))
{
   include dirname(__FILE__)."/controllers/login_controller.php";
}

并在 ajax.php 中;

$user = SessionManager::getSessionUser();

if(!isset($user))
{
   echo json_encode(array("error" => true, "type" => NOT_ALLOWED, "message" => "User should login"));
}

所以它适用于所有情况(我猜:)),但我想知道处理它的最佳做法是什么?还有其他想法吗?

4

1 回答 1

2

下面是一个如何使用 PHP 创建持久登录的示例,其中数据库与 cookie 结合使用,以验证 cookie 的真实性:

http://jeremycook.ca/2010/03/28/creating-a-persistent-login-mechanism/

于 2011-11-27T13:39:50.740 回答