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 相关文章推荐
推荐php模板技术[转]
Jan 04 PHP
PHP程序61条面向对象分析设计的经验小结
Nov 12 PHP
PHP使用PHPMailer发送邮件的简单使用方法
Nov 12 PHP
百度地图API应用之获取用户的具体位置
Jun 10 PHP
ThinkPHP中U方法的使用浅析
Jun 13 PHP
ThinkPHP中的系统常量和预定义常量集合
Jul 01 PHP
PHP实现文件下载详解
Nov 27 PHP
php简单判断两个字符串是否相等的方法
Jul 13 PHP
php实现base64图片上传方式实例代码
Feb 22 PHP
Redis在Laravel项目中的应用实例详解
Aug 11 PHP
laravel 如何实现引入自己的函数或类库
Oct 15 PHP
你真的了解PHP中的引用符号(&)吗
May 12 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制作静态网站的模板框架(一)
2006/10/09 PHP
支持中文字母数字、自定义字体php验证码代码
2012/02/27 PHP
PHP扩展模块Pecl、Pear以及Perl的区别
2014/04/09 PHP
php编写的抽奖程序中奖概率算法
2015/05/14 PHP
PHP实现网页内容html标签补全和过滤的方法小结【2种方法】
2017/04/27 PHP
jquery ajax请求实例深入解析
2012/11/26 Javascript
在javascript中关于节点内容加强
2013/04/11 Javascript
一个封装js代码-----展开收起效果示例
2013/07/03 Javascript
js控制浏览器全屏示例代码
2014/02/20 Javascript
jquery仿搜索自动联想功能代码
2014/05/23 Javascript
js超时调用setTimeout和间歇调用setInterval实例分析
2015/01/28 Javascript
JavaScript实现俄罗斯方块游戏过程分析及源码分享
2015/03/23 Javascript
javascript鼠标滑过显示二级菜单特效
2020/11/18 Javascript
解决vue 子组件修改父组件传来的props值报错问题
2019/11/09 Javascript
JS错误处理与调试操作实例分析
2020/04/13 Javascript
JS异步宏队列微队列原理详解
2020/09/09 Javascript
基于Python 的进程管理工具supervisor使用指南
2016/09/18 Python
Python3 循环语句(for、while、break、range等)
2017/11/20 Python
Django中url的反向查询的方法
2018/03/14 Python
pandas数据处理进阶详解
2019/10/11 Python
Selenium自动化测试工具使用方法汇总
2020/06/12 Python
HTML5打开手机扫码功能及优缺点
2017/11/27 HTML / CSS
Kenneth Cole官网:纽约时尚优雅品牌
2016/11/14 全球购物
世界第一曲奇连锁店:Mrs. Fields Cookies
2017/02/04 全球购物
高三自我鉴定范文
2013/10/19 职场文书
新闻编辑自荐信
2013/11/03 职场文书
高中生期末评语
2014/01/28 职场文书
超市国庆节促销方案
2014/02/20 职场文书
2014学校庆三八妇女节活动总结
2014/03/01 职场文书
集团公司党的群众路线教育实践活动工作总结
2014/03/03 职场文书
项目投资意向书
2014/04/01 职场文书
活动总结报告范文
2014/05/04 职场文书
终止劳动合同协议书
2014/10/05 职场文书
2015年社区中秋节活动总结
2015/03/23 职场文书
个人催款函范文
2015/06/23 职场文书
2016公司中秋节寄语
2015/12/07 职场文书