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


Posted in PHP onMay 13, 2016

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

PHP 相关文章推荐
图片存储与浏览一例(Linux+Apache+PHP+MySQL)
Oct 09 PHP
php include加载文件两种方式效率比较
Aug 08 PHP
PHP中PDO的错误处理
Sep 04 PHP
PHP删除HTMl标签的实现代码
Jun 30 PHP
jQuery中的RadioButton,input,CheckBox取值赋值实现代码
Feb 18 PHP
改写ThinkPHP的U方法使其路由下分页正常
Jul 02 PHP
PHP中cookie和session的区别实例分析
Aug 28 PHP
thinkphp3.2中Lite文件替换框架入口文件或应用入口文件的方法
May 21 PHP
CodeIgniter扩展核心类实例详解
Jan 20 PHP
PHP读书笔记整理_结构语句详解
Jul 01 PHP
基于php(Thinkphp)+jquery 实现ajax多选反选不选删除数据功能
Feb 24 PHP
Laravel实现autoload方法详解
May 07 PHP
PHP根据session与cookie用户登录状态操作类的代码
May 13 #PHP
php用户登录之cookie信息安全分析
May 13 #PHP
PHP数组函数知识汇总
May 12 #PHP
使用phpexcel类实现excel导入mysql数据库功能(实例代码)
May 12 #PHP
php similar_text()函数的定义和用法
May 12 #PHP
php使用curl并发减少后端访问时间的方法分析
May 12 #PHP
php反射类ReflectionClass用法分析
May 12 #PHP
You might like
综合图片计数器
2006/10/09 PHP
无数据库的详细域名查询程序PHP版(5)
2006/10/09 PHP
Wordpress php 分页代码
2009/10/21 PHP
PHP Reflection API详解
2015/05/12 PHP
jQuery控制iFrame(实例代码)
2013/11/19 Javascript
js每隔5分钟执行一次ajax请求的实现方法
2013/11/27 Javascript
AngularJS表达式讲解及示例代码
2016/08/16 Javascript
鼠标点击input,显示瞬间的边框颜色,对之修改与隐藏实例
2016/12/26 Javascript
vuejs使用递归组件实现树形目录的方法
2017/09/30 Javascript
详解webpack babel的配置
2018/01/09 Javascript
react native 文字轮播的实现示例
2018/07/27 Javascript
vue 列表页跳转详情页获取id以及详情页通过id获取数据
2019/03/27 Javascript
如何实现小程序tab栏下划线动画效果
2019/05/18 Javascript
Python中使用PIPE操作Linux管道
2015/02/04 Python
Python实现豆瓣图片下载的方法
2015/05/25 Python
CentOS安装pillow报错的解决方法
2016/01/27 Python
Python实现的质因式分解算法示例
2018/05/03 Python
Keras load_model 导入错误的解决方式
2020/06/09 Python
Python-openCV开运算实例
2020/07/05 Python
美国祛痘、抗衰老药妆品牌:Murad
2016/08/27 全球购物
纽约市的奢华内衣目的地:Anya Lust
2019/08/02 全球购物
eDreams德国:南欧领先的在线旅游公司
2020/12/07 全球购物
管理科学大学生求职信
2013/11/13 职场文书
父亲八十大寿答谢词
2014/01/23 职场文书
《口技》教学反思
2014/02/21 职场文书
党的群众路线教育实践活动动员会主持词
2014/03/20 职场文书
实验心得体会
2014/09/05 职场文书
工作经历证明书范文
2014/11/02 职场文书
2014年乡镇党建工作总结
2014/11/11 职场文书
2015年安置帮教工作总结
2015/05/22 职场文书
元旦晚会开场白
2015/05/29 职场文书
学困生转化工作总结
2015/08/13 职场文书
你会写请假条吗?
2019/06/26 职场文书
解决tk mapper 通用mapper的bug问题
2021/06/16 Java/Android
经典《舰娘》游改全新动画预告 预定11月开播
2022/04/01 日漫
游戏《东方异文石:爱亚利亚黎明》正式版发布
2022/04/03 其他游戏