当前位置:首页 > PHP教程 > php会话 > 列表

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

发布:smiling 来源: PHP粉丝网  添加日期:2021-08-03 16:39:55 浏览: 评论:0 

下面小编就为大家带来一篇php同时使用session和cookie来保存用户登录信息的实现代码,小编觉得挺不错的,现在分享给大家,也给大家做个参考,一起跟随小编过来看看吧。

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

  1. <?php 
  2.  
  3. final class UserLogin { 
  4.  
  5.  public function __construct() { 
  6.     
  7.  } 
  8.  
  9.  public static function getUserInfo() { 
  10.   if (isset($_COOKIE["user_id"])&&$_COOKIE["user_id"]&&(trim($_COOKIE["user_id"])!="")) { 
  11.    if (isset($_SESSION["USER_INFO"])) 
  12.     return $_SESSION["USER_INFO"]; 
  13.    $dao = new UserDao(); 
  14.    $user = $dao->find($_COOKIE["user_id"]); 
  15.    if ($user) { 
  16.     $_SESSION["USER_INFO"] = $user
  17.     setcookie("docloud_sid", session_id(), time() + 36000); 
  18.     setcookie("user_id"$_COOKIE["user_id"], time() + 36000); 
  19.       
  20.     if (array_key_exists("selected_prj_id"$_COOKIE)) 
  21.      setcookie("selected_prj_id"$_COOKIE["selected_prj_id"], time() + 36000); 
  22.       
  23.     if (array_key_exists("selected_class_id"$_COOKIE)) 
  24.      setcookie("selected_class_id"$_COOKIE["selected_class_id"], time() + 36000); 
  25.       
  26.     if (array_key_exists("selected_image_id"$_COOKIE)) 
  27.      setcookie("selected_image_id"$_COOKIE["selected_image_id"], time() + 36000); 
  28.       
  29.     if (array_key_exists("test_image_ids"$_COOKIE)) 
  30.      setcookie("test_image_ids"$_COOKIE["test_image_ids"], time() + 36000); 
  31.       
  32.     if (array_key_exists("upload_image_ids"$_COOKIE)) 
  33.      setcookie("upload_image_ids"$_COOKIE["upload_image_ids"], time() + 36000); 
  34.     return $user
  35.    } 
  36.   } 
  37.   self::clearCookie(); 
  38.   return null; 
  39.  } 
  40.  
  41.  public static function setUserInfo($userInfo) { 
  42.   $_SESSION["USER_INFO"] = $userInfo
  43.   setcookie("docloud_sid", session_id(), time() + 36000); 
  44.   setcookie("user_id"$userInfo->getId(), time() + 36000); 
  45.  } 
  46.  
  47.  public static function isLogin() { 
  48.   if (self::getUserInfo()) { 
  49.    return true; 
  50.   } 
  51.   return false; 
  52.  } 
  53.  
  54.  public static function delUserInfo() { 
  55.   self::clearCookie(); 
  56.   session_destroy(); 
  57.  } 
  58.    
  59.  private static function clearCookie() { 
  60.   setcookie("docloud_sid""", time() - 36000); 
  61.   setcookie("user_id""", time() - 36000); 
  62.   setcookie("selected_prj_id""", time() - 36000); 
  63.   setcookie("selected_class_id""", time() - 36000); 
  64.   setcookie("selected_image_id""", time() - 36000); 
  65.   setcookie("test_image_ids""", time() - 36000); 
  66.   setcookie("upload_image_ids""", time() - 36000); 
  67.  } 
  68.  
  69.  
  70. ?> 

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

  1. <?php 
  2. require_once 'Init.php'
  3.  
  4. // if logged in, logout 
  5. if (UserLogin::isLogin() && $_COOKIE["user_id"]==1) { 
  6.  UserLogin::delUserInfo(); 
  7. else if (UserLogin::isLogin()){ 
  8.  Utils::redirect('welcome'); 
  9.  
  10. $username = null; 
  11. $password = null; 
  12.  
  13. $msg = ""
  14.  
  15. if (isset($_POST['username']) && isset($_POST['password'])) { 
  16.  $username = addslashes(trim(stripslashes($_POST ['username']))); 
  17.  $password = addslashes(trim(stripslashes($_POST ['password']))); 
  18.  // validate 
  19.  $errors = LoginValidator::validate($username$password); 
  20.    
  21.  if (emptyempty($errors)) { 
  22.   // save 
  23.   $dao = new UserDao(); 
  24.   $user = $dao->findByName($username); 
  25.   $last_login_ip = Utils::getIpAddress(); 
  26.   $user->setLastLoginIp($last_login_ip); 
  27.   $now = new DateTime(); 
  28.   $user->setLastLoginTime($now); 
  29.   $dao->save($user); 
  30.   UserLogin::setUserInfo($user); 
  31.   Flash::addFlash('登录成功!'); 
  32.   Utils::redirect('welcome'); 
  33.  } 
  34.    
  35.  foreach ($errors as $e) { 
  36.   $msg .= $e->getMessage()."<br>"
  37.  } 
  38.  
  39. ?> 

以上这篇php同时使用session和cookie来保存用户登录信息的实现代码就是小编分享给大家的全部内容了。

Tags: session cookie

分享到: