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 相关文章推荐
56.com视频采集接口程序(PHP)
Sep 22 PHP
php下用cookie统计用户访问网页次数的代码
May 09 PHP
PHP Class&amp;Object -- PHP 自排序二叉树的深入解析
Jun 25 PHP
PHP获取MySql新增记录ID值的3种方法
Jun 24 PHP
PHP字符串比较函数strcmp()和strcasecmp()使用总结
Nov 19 PHP
PHP编程入门的基本语法知识点总结
Jan 26 PHP
ThinkPHP表单令牌错误的相关解决方法分析
May 20 PHP
PHP实现的简单异常处理类示例
May 04 PHP
浅谈PHP中pack、unpack的详细用法
Mar 12 PHP
PHP通过curl获取接口URL的数据方法
May 31 PHP
PHP如何搭建百度Ueditor富文本编辑器
Sep 21 PHP
php优化查询foreach代码实例讲解
Mar 24 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
关于PHP中操作MySQL数据库的一些要注意的问题
2006/10/09 PHP
PHP自动生成月历代码
2006/10/09 PHP
PHP zip扩展Linux下安装过程分享
2014/05/05 PHP
PHP中date与gmdate的区别及默认时区设置
2014/05/12 PHP
tp5递归 无限级分类详解
2019/10/18 PHP
php7 图形用户界面GUI 开发示例
2020/02/22 PHP
基于JQuery的浮动DIV显示提示信息并自动隐藏
2011/02/11 Javascript
jQuery lazyLoad图片延迟加载插件的优化改造方法分享
2013/08/13 Javascript
jQuery中事件对象e的事件冒泡用法示例介绍
2014/04/25 Javascript
jQuery选择器之基本选择器与层次选择器
2015/03/03 Javascript
jquery+easeing实现仿flash的载入动画
2015/03/10 Javascript
asp知识整理笔记3(问答模式)
2015/09/27 Javascript
AngularJS使用ngMessages进行表单验证
2015/12/27 Javascript
纯前端JavaScript实现Excel IO案例分享
2016/08/26 Javascript
JS实现的系统调色板完整实例
2016/12/21 Javascript
easyui combotree加载静态数据问题(选不上)解决方法
2016/12/26 Javascript
vue获取dom元素注意事项
2017/12/28 Javascript
详解Node.js中的Async和Await函数
2018/02/22 Javascript
vue+webpack中配置ESLint
2018/11/07 Javascript
vue数据初始化initState的实例详解
2019/04/11 Javascript
小程序数据通信方法大全(推荐)
2019/04/15 Javascript
小程序开发踩坑:页面窗口定位(相对于浏览器定位)(推荐)
2019/04/25 Javascript
微信小程序绘制半圆(弧形)进度条
2020/11/18 Javascript
浅谈Python中copy()方法的使用
2015/05/21 Python
python导入时小括号大作用
2017/01/10 Python
使用python在本地电脑上快速处理数据
2017/06/22 Python
目前最全的python的就业方向
2018/06/05 Python
在python3中使用shuffle函数要注意的地方
2020/02/28 Python
美国购买韩国护肤和美容产品网站:Althea Korea
2020/11/16 全球购物
一套带答案的C++笔试题
2014/01/10 面试题
大学军训感言
2014/01/10 职场文书
申请任职学生会干部自荐书范文
2014/02/13 职场文书
大队干部竞选演讲稿
2014/04/28 职场文书
五星级酒店前台接待岗位职责
2015/04/02 职场文书
html+css合并表格边框的示例代码
2021/03/31 HTML / CSS
SQL写法--行行比较
2021/08/23 SQL Server