加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > Linux > 正文

LINUX入门:php同时使用session和cookie来保存用户登录信息的实

发布时间:2020-12-13 17:50:55 所属栏目:Linux 来源:网络整理
导读:《LINUX入门:php同时使用session和cookie来保存用户登录信息的实现代码》要点: 本文介绍了LINUX入门:php同时使用session和cookie来保存用户登录信息的实现代码,希望对您有用。如果有疑问,可以联系我们。 1、用户登录状态操作类UserLogin ?phpfinal clas

《LINUX入门:php同时使用session和cookie来保存用户登录信息的实现代码》要点:
本文介绍了LINUX入门:php同时使用session和cookie来保存用户登录信息的实现代码,希望对您有用。如果有疑问,可以联系我们。

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

<?php
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
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()."<br>";
 }
}
?>

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读