如何在php中利用session与cookie保存用户的登录信息

发布时间:2020-12-18 15:49:56

来源:亿速云

阅读:95

作者:Leah

如何在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()."
";

}

}

?>

关于如何在php中利用session与cookie保存用户的登录信息问题的解答就分享到这里了,希望以上内容可以对大家有一定的帮助,如果你还有很多疑惑没有解开,可以关注亿速云行业资讯频道了解更多相关知识。

php通过session保存用户信息,如何在php中利用session与cookie保存用户的登录信息相关推荐

  1. java jsch 切换用户_如何在java中使用Jsch切换到root用户执行命令?

    我正在尝试通过使用私钥建立的ssh连接执行一组命令.为此我在java中使用了JSCh和Session类. 以下是代码: java.util.Properties config = new java.u ...

  2. su命令切换到root用户_如何在Linux中使用su命令成为超级用户或root?

    su命令切换到root用户 Linux provides root account as superuser or Administrator. As root account has all pri ...

  3. php 输出图片给js,如何在php中利用croppic.js对图片进行剪切并上传

    如何在php中利用croppic.js对图片进行剪切并上传 发布时间:2021-01-30 16:41:02 来源:亿速云 阅读:92 作者:Leah 这篇文章将为大家详细讲解有关如何在php中利用c ...

  4. php利用ajax文件上传,如何在PHP中利用AjaxForm实现一个文件上传功能

    如何在PHP中利用AjaxForm实现一个文件上传功能 发布时间:2020-12-18 14:52:38 来源:亿速云 阅读:94 作者:Leah 如何在PHP中利用AjaxForm实现一个文件上传功 ...

  5. android view gesturedetector,如何在Android中利用 GestureDetector进行手势检测

    如何在Android中利用 GestureDetector进行手势检测 发布时间:2020-11-26 16:15:21 来源:亿速云 阅读:92 作者:Leah 今天就跟大家聊聊有关如何在Andro ...

  6. 启动hfds文件系统,普通用户查看不到jps中的服务进程,但是root用户可以【该问题已经解决】

    #启动hfds文件系统,普通用户查看不到jps中的服务进程,但是root用户可以[该问题已经解决] 在将所有的配置信息写好之后(core-site.xml\hdfs-site.xml等等),对 Nam ...

  7. android开发 转跳功能,如何在Android中利用Intent实现一个页面跳转功能

    如何在Android中利用Intent实现一个页面跳转功能 发布时间:2021-02-20 17:06:31 来源:亿速云 阅读:113 作者:Leah 本篇文章为大家展示了如何在Android中利用 ...

  8. php中glob怎么用,如何在php中利用glob函数对文件进行遍历

    如何在php中利用glob函数对文件进行遍历 发布时间:2020-12-11 16:02:47 来源:亿速云 阅读:76 作者:Leah 如何在php中利用glob函数对文件进行遍历?相信很多没有经验 ...

  9. php模拟IP请求,如何在php中利用curl对ip进行模拟

    如何在php中利用curl对ip进行模拟 发布时间:2020-12-24 14:25:08 来源:亿速云 阅读:71 作者:Leah 如何在php中利用curl对ip进行模拟?很多新手对此不是很清楚, ...

最新文章

  1. 9月,最值得看的30篇肠道健康文献!
  2. Spring Boot 添加拦截器的配置方式
  3. 《Pro Android Graphics》读书笔记之第二节
  4. file control
  5. ubuntu16.04安装R及RStudio
  6. js怎么调用wasm_Long.js源码解析
  7. 物联网是互联网发展的必然趋势吗?
  8. 论文浅尝 | Open world Knowledge Graph Completion
  9. win7系统图标太大的缩小教程
  10. 【转载】利用压缩网页来提升网站浏览速度
  11. 从零开始学TensorFlow 1
  12. 三行代码实现冒泡排序算法
  13. IO流使用示例,字符流文件拷贝demo
  14. Python 字典或JSON模拟数据库的增删改查
  15. pg数据库表存放在哪里_pg数据库系统表
  16. win10删除微软拼音
  17. 验证OpenVino时,找不到指定模块的解决
  18. JPA 学习(四) JPA_EntityManager系列
  19. 告诉你SuperMap iDesktop软件怎么一步步制作地图的方法
  20. 如何取消PPT中的动画效果

热门文章

  1. t420i升级固态硬盘提升_科赋CRAS C710 M.2固态硬盘评测:经典再升级
  2. vue3+typescript 写小学算术出题器web应用(一)
  3. 基于微信小程序的四六级助手系统——计算机毕业设计
  4. 推荐一款好用的外语复读工具——aboboo
  5. 立体声蓝牙耳机工作原理
  6. IBM SPSS Statistics 27 Mac(spss专业统计分析软件)
  7. python如果选择不在列表里_具体问题具体分析!Python中比列表更便捷的小方法
  8. iOS 知识点大总结(转)
  9. cv2利用voc中数据集对图片进行涂色
  10. Python 实现Ethernet/IP 通信