我在我的网站上有持久登录,因此如果用户在登录过程中检查“记住我”,请设置 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"));
}
所以它适用于所有情况(我猜:)),但我想知道处理它的最佳做法是什么?还有其他想法吗?