热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

php依据session与cookie用户登录状态操作类-jerrylsxu

php依据session与cookie用户登录状态操作类-jerrylsxu
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()."
"; } } ?>


推荐阅读
  • 本文介绍了Python高级网络编程及TCP/IP协议簇的OSI七层模型。首先简单介绍了七层模型的各层及其封装解封装过程。然后讨论了程序开发中涉及到的网络通信内容,主要包括TCP协议、UDP协议和IPV4协议。最后还介绍了socket编程、聊天socket实现、远程执行命令、上传文件、socketserver及其源码分析等相关内容。 ... [详细]
  • 知识图谱——机器大脑中的知识库
    本文介绍了知识图谱在机器大脑中的应用,以及搜索引擎在知识图谱方面的发展。以谷歌知识图谱为例,说明了知识图谱的智能化特点。通过搜索引擎用户可以获取更加智能化的答案,如搜索关键词"Marie Curie",会得到居里夫人的详细信息以及与之相关的历史人物。知识图谱的出现引起了搜索引擎行业的变革,不仅美国的微软必应,中国的百度、搜狗等搜索引擎公司也纷纷推出了自己的知识图谱。 ... [详细]
  • MACElasticsearch安装步骤及验证方法
    本文介绍了MACElasticsearch的安装步骤,包括下载ZIP文件、解压到安装目录、启动服务,并提供了验证启动是否成功的方法。同时,还介绍了安装elasticsearch-head插件的方法,以便于进行查询操作。 ... [详细]
  • Oracle分析函数first_value()和last_value()的用法及原理
    本文介绍了Oracle分析函数first_value()和last_value()的用法和原理,以及在查询销售记录日期和部门中的应用。通过示例和解释,详细说明了first_value()和last_value()的功能和不同之处。同时,对于last_value()的结果出现不一样的情况进行了解释,并提供了理解last_value()默认统计范围的方法。该文对于使用Oracle分析函数的开发人员和数据库管理员具有参考价值。 ... [详细]
  • 概述H.323是由ITU制定的通信控制协议,用于在分组交换网中提供多媒体业务。呼叫控制是其中的重要组成部分,它可用来建立点到点的媒体会话和多点间媒体会议 ... [详细]
  • 当google在搜索上很成功,并购youtube、发布gmail、进入手机、一统地图的时候,我们说google真伟大。当苹果在mp3领域一骑绝尘,iphone秒杀诺基亚,ipad打倒了电子 ... [详细]
  • 1、DashAPI文档Dash是一个API文档浏览器,使用户可以使用离线功能即时搜索无数API。程序员使用Dash可访问iOS,MacOS, ... [详细]
  • Apple iPad:过渡设备还是平板电脑?
    I’vebeenagonizingoverwhethertopostaniPadarticle.Applecertainlydon’tneedmorepublicityandthe ... [详细]
  • PHP玩家基地系统毕业设计(附源码、运行环境)的用户登录界面、游戏管理和玩家作品管理
    本文介绍了一个PHP玩家基地系统的毕业设计,包括用户登录界面、游戏管理和玩家作品管理等功能。附带源码和运行环境,并提供免费赠送本源代码和数据库的方式,请私信获取详细信息。摘要共计约XXX字。 ... [详细]
  • ZSI.generate.Wsdl2PythonError: unsupported local simpleType restriction ... [详细]
  • 本文介绍了Perl的测试框架Test::Base,它是一个数据驱动的测试框架,可以自动进行单元测试,省去手工编写测试程序的麻烦。与Test::More完全兼容,使用方法简单。以plural函数为例,展示了Test::Base的使用方法。 ... [详细]
  • 推荐系统遇上深度学习(十七)详解推荐系统中的常用评测指标
    原创:石晓文小小挖掘机2018-06-18笔者是一个痴迷于挖掘数据中的价值的学习人,希望在平日的工作学习中,挖掘数据的价值, ... [详细]
  • 解决Cydia数据库错误:could not open file /var/lib/dpkg/status 的方法
    本文介绍了解决iOS系统中Cydia数据库错误的方法。通过使用苹果电脑上的Impactor工具和NewTerm软件,以及ifunbox工具和终端命令,可以解决该问题。具体步骤包括下载所需工具、连接手机到电脑、安装NewTerm、下载ifunbox并注册Dropbox账号、下载并解压lib.zip文件、将lib文件夹拖入Books文件夹中,并将lib文件夹拷贝到/var/目录下。以上方法适用于已经越狱且出现Cydia数据库错误的iPhone手机。 ... [详细]
  • POCOCLibraies属于功能广泛、轻量级别的开源框架库,它拥有媲美Boost库的功能以及较小的体积广泛应用在物联网平台、工业自动化等领域。POCOCLibrai ... [详细]
  • 我一直都有记录信息的习惯,不知是从什么时候开始,大约是在工作后不久。如今还真有点庆幸从那时开始记了点东西,当然是电子版的,写 ... [详细]
author-avatar
梦晗明镜百_576
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有