zoukankan      html  css  js  c++  java
  • php 依据session与cookie用户登录状态操作类

    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>";
        }
    }
    
    ?>

     推荐一个自己业余时间开发的网盘搜索引擎,360盘搜www.360panso.com

  • 相关阅读:
    dedecms图片列表效果调用
    ThinkPHP 中M方法和D方法的具体区别
    在线更新dede程序后 网站出现错误 DedeCMS Error:Tag disabled:"php" more...!
    Form元素示例
    PHP使用frameset制作后台界面时,怎样实现通过操作左边框架,使右边框架中的页面跳转?
    删除UTF-8 BOM头的GUI小工具
    解决 ultraedit 菜单字体模糊
    git使用及一些配置、问题
    shell之基本语法
    shell之iptables
  • 原文地址:https://www.cnblogs.com/eczhou/p/2815773.html
Copyright © 2011-2022 走看看