php通过session保存用户信息,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", session_id(), 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、在用户输入用户名、密码处调用来做相关判定

require_once 'Init.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来保存用户登录信息的实现代码就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持脚本之家。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值