php同时使用session和cookie来保存用户登录信息的实现代码

1、用户登录状态操作类UserLogin

final class UserLogin {

public function __construct() {

}

public static function getUserInfo() {
if (isset($_COOKIE["user_id"])&&$_COOKIE["user_id"]&&(trim($_COOKIE["user_id"])!="")) {
if (isset($_SESSION["USER_INFO"]))
return $_SESSION["USER_INFO"];
$dao = new UserDao();
$user = $dao->find($_COOKIE["user_id"]);
if ($user) {
$_SESSION["USER_INFO"] = $user;
setcookie("docloud_sid",session_id(),time() + 36000);
setcookie("user_id",$_COOKIE["user_id"],time() + 36000);

if (array_key_exists("selected_prj_id",$_COOKIE))
 setcookie("selected_prj_id",$_COOKIE["selected_prj_id"],time() + 36000);

if (array_key_exists("selected_class_id",$_COOKIE))
 setcookie("selected_class_id",$_COOKIE["selected_class_id"],time() + 36000);

if (array_key_exists("selected_image_id",$_COOKIE))
 setcookie("selected_image_id",$_COOKIE["selected_image_id"],time() + 36000);

if (array_key_exists("test_image_ids",$_COOKIE))
 setcookie("test_image_ids",$_COOKIE["test_image_ids"],time() + 36000);

if (array_key_exists("upload_image_ids",$_COOKIE))
 setcookie("upload_image_ids",$_COOKIE["upload_image_ids"],time() + 36000);
return $user;

}
}
self::clearCookie();
return null;
}

public static function setUserInfo($userInfo) {
$_SESSION["USER_INFO"] = $userInfo;
setcookie("docloud_sid",time() + 36000);
setcookie("user_id",$userInfo->getId(),time() + 36000);
}

public static function isLogin() {
if (self::getUserInfo()) {
return true;
}
return false;
}

public static function delUserInfo() {
self::clearCookie();
session_destroy();
}

private static function clearCookie() {
setcookie("docloud_sid","",time() - 36000);
setcookie("user_id",time() - 36000);
setcookie("selected_prj_id",time() - 36000);
setcookie("selected_class_id",time() - 36000);
setcookie("selected_image_id",time() - 36000);
setcookie("test_image_ids",time() - 36000);
setcookie("upload_image_ids",time() - 36000);
}

}

?>

2、在用户输入用户名、密码处调用来做相关判定

PHP;"> // if logged in,logout
if (UserLogin::isLogin() && $_COOKIE["user_id"]==1) {
UserLogin::delUserInfo();
}
else if (UserLogin::isLogin()){
Utils::redirect('welcome');
}

$username = null;
$password = null;

$msg = "";

if (isset($_POST['username']) && isset($_POST['password'])) {
$username = addslashes(trim(stripslashes($_POST ['username'])));
$password = addslashes(trim(stripslashes($_POST ['password'])));
// validate
$errors = LoginValidator::validate($username,$password);

if (empty($errors)) {
// save
$dao = new UserDao();
$user = $dao->findByName($username);
$last_login_ip = Utils::getIpAddress();
$user->setLastLoginIp($last_login_ip);
$now = new DateTime();
$user->setLastLoginTime($now);
$dao->save($user);
UserLogin::setUserInfo($user);
Flash::addFlash('登录成功!');
Utils::redirect('welcome');
}

foreach ($errors as $e) {
$msg .= $e->getMessage()."
";
}
}

?>

以上这篇PHP同时使用session和cookie来保存用户登录信息的实现代码就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持编程之家。

相关文章

Hessian开源的远程通讯,采用二进制 RPC的协议,基于 HTTP 传输。可以实现PHP调用Java,Python,C#等多语...
初识Mongodb的一些总结,在Mac Os X下真实搭建mongodb环境,以及分享个Mongodb管理工具,学习期间一些总结...
边看边操作,这样才能记得牢,实践是检验真理的唯一标准.光看不练假把式,光练不看傻把式,边看边练真把式....
在php中,结果输出一共有两种方式:echo和print,下面将对两种方式做一个比较。 echo与print的区别: (...
在安装好wampServer后,一直没有使用phpMyAdmin,今天用了一下,phpMyAdmin显示错误:The mbstring exte...
变量是用于存储数据的容器,与代数相似,可以给变量赋予某个确定的值(例如:$x=3)或者是赋予其它的变...