欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

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

程序员文章站 2023-12-21 15:40:46
1、用户登录状态操作类userlogin

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", 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、在用户输入用户名、密码处调用来做相关判定

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

上一篇:

下一篇: