我在我的网站上有持续登录,因此如果用户在登录过程中检查“记住我”,请设置cookie以使用户在该浏览器中始终保持活动状态。
有两条路径可以访问任何页面..如果它不是ajax请求,请求通过index.php,但如果请求是ajax,则只需要通过ajax.php。
首先处理用户请求我检查会话是否存储用户ID,如果会话持有用户没有问题,请求将完成。 但是如果会话中没有当前的用户ID,我检查了cookie以获取自动登录,如果我可以通过cookie登录用户,强制使用cookie数据自动登录,并在用户不做任何事情时使用userid设置Session ..
现在要处理它,我在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"));
}
所以它适用于所有情况(我猜:)),但我想知道什么是处理它的最佳做法?还有其他想法吗?
答案 0 :(得分:2)
以下是如何使用PHP创建持久登录的一个示例,其中数据库与cookie结合使用,以验证cookie是否可信:
http://jeremycook.ca/2010/03/28/creating-a-persistent-login-mechanism/