广告
返回顶部
首页 > 资讯 > 后端开发 > PHP编程 >PHP用Session实现用户登陆功能
  • 406
分享到

PHP用Session实现用户登陆功能

php登录session用户登陆 2022-12-22 18:12:56 406人浏览 薄情痞子
摘要

目录一、启动 Session 会话,并创建一个 $admin 变量:二、验证提交数据三、判断是否登陆:四、如果要登出系统怎么办?销毁 Session 即可。五、设置生存周期对比起Co

对比起Cookie,Session 是存储在服务器端的会话,相对安全,并且不像 Cookie 那样有存储长度限制。由于 Session 是以文本文件形式存储在服务器端的,所以不怕远程用户修改 Session 内容。实际上在服务器端的 Session 文件,PHP 自动修改 Session 文件的权限,只保留了系统读和写权限,而且不能通过 ftp 修改,所以安全得多。

因为客户端 Cookie 中的信息是有可能被修改的。假如你存储 $admin 变量来表示用户是否登陆,$admin 为 true 的时候表示登陆,为 false 的时候表示未登录,在第一次通过验证后将 $admin 等于 true 存储在 Cookie,下次就不用验证了,这样对么?错了,假如有人伪造一个值为 true 的 $admin 变量那不是就立即取的了管理权限么?非常的不安全。

而 Session 就不同了,我们可以单纯存储一个 $admin 变量来判断是否登陆,首次验证通过后设置 $admin 值为 true,以后判断该值是否为 true,假如不是,转入登陆界面,这样就可以减少很多数据库操作了。

一、启动 Session 会话,并创建一个 $admin 变量:

<?php
//  启动 Session
session_start();
//  声明一个名为 admin 的变量,并赋空值。
$_SESSION["admin"] = null;
?>

二、验证提交数据

假设数据库存储的是用户名和 md5 加密后的密码:

login.php:

<?php
//  表单提交后...
$posts = $_POST;
//  清除一些空白符号
foreach ($posts as $key => $value) {
    $posts[$key] = trim($value);
}
$passWord = md5($posts["password"]);
$username = $posts["username"]; 

$query = "SELECT `username` FROM `user` WHERE `password` = '$password' AND `username` = '$username'";
//  取得查询结果
$userInfo = $DB->getRow($query); 

if (!empty($userInfo)) {
    //  当验证通过后,启动 Session
    session_start();
    //  注册登陆成功的 admin 变量,并赋值 true
    $_SESSION["admin"] = true;
} else {
    die("用户名密码错误");
}
?>

三、判断是否登陆:

<?php
//  防止全局变量造成安全隐患
$admin = false;
//  启动会话,这步必不可少
session_start();
//  判断是否登陆
if (isset($_SESSION["admin"]) && $_SESSION["admin"] === true) {
    echo "您已经成功登陆";
} else {
    //  验证失败,将 $_SESSION["admin"] 置为 false
    $_SESSION["admin"] = false;
    die("您无权访问");
}
?>

四、如果要登出系统怎么办?销毁 Session 即可。

<?php
session_start();
//  这种方法是将原来注册的某个变量销毁
unset($_SESSION['admin']);
//  这种方法是销毁整个 Session 文件
session_destroy();
?>

注释:session_destroy() 将重置 session,您将失去所有已存储的 session 数据。

五、设置生存周期

Session 能否像 Cookie 那样设置生存周期呢?有了 Session 是否就完全抛弃 Cookie 呢?我想说,结合 Cookie 来使用 Session 才是最方便的。

Session 是如何来判断客户端用户的呢?它是通过 Session ID 来判断的,什么是 Session ID,就是那个 Session 文件的文件名,Session ID 是随机生成的,因此能保证唯一性和随机性,确保 Session 的安全。一般如果没有设置 Session 的生存周期,则 Session ID 存储在内存中,关闭浏览器后该 ID 自动注销,重新请求该页面后,重新注册一个 Session ID。

如果客户端没有禁用 Cookie,则 Cookie 在启动 Session 会话的时候扮演的是存储 Session ID 和 Session 生存期的角色。

  • 通过Cookie设置 Session 的生存期:
<?php
session_start();
//  保存一天
$lifeTime = 24 * 3600;
setcookie(session_name(), session_id(), time() + $lifeTime, "/");
?>
  • 通过函数 session_set_cookie_params(); 来设置 Session 的生存期的,该函数必须在 session_start() 函数调用之前调用:
<?php
//  保存一天
$lifeTime = 24 * 3600;
session_set_cookie_params($lifeTime);
session_start();
$_SESSION["admin"] = true;
?>
  • 假设客户端禁用 Cookie 怎么办?没办法,所有生存周期都是浏览器进程了,只要关闭浏览器,再次请求页面又得重新注册 Session。那么怎么传递 Session ID 呢?通过 URL 或者通过隐藏表单来传递,PHP 会自动将 Session ID 发送到 URL 上,URL 形如:Http://www.test.cn/index.php?PHPSESSID= bba5b2a240a77e5b44cfa01d49cf9669,其中 URL 中的参数 PHPSESSID 就是 Session ID了,我们可以使用 $_GET 来获取该值,从而实现 Session ID 页面间传递。
<?php
//  保存一天
$lifeTime = 24 * 3600;
//  取得当前 Session 名,默认为 PHPSESSID
$sessionName = session_name();
//  取得 Session ID
$sessionID = $_GET[$sessionName];
//  使用 session_id() 设置获得的 Session ID
session_id($sessionID); 

session_set_cookie_params($lifeTime);
session_start();
$_SESSION['admin'] = true;
?>

手动设置 Session 文件的保存路径,session_save_path() 就提供了这样一个功能。我们可以将 Session 存放目录指向一个不能通过 WEB 方式访问的文件夹,当然,该文件夹必须具备可读写属性。

<?php
//  设置一个存放目录
$savePath = './session_save_dir/';
//  保存一天
$lifeTime = 24 * 3600;
session_save_path($savePath);
session_set_cookie_params($lifeTime);
session_start();
$_SESSION['admin'] = true;
?>

到此这篇关于PHP用Session实现用户登陆功能的文章就介绍到这了,更多相关PHP用Session登陆内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: PHP用Session实现用户登陆功能

本文链接: https://www.lsjlt.com/news/175602.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • PHP用Session实现用户登陆功能
    目录一、启动 Session 会话,并创建一个 $admin 变量:二、验证提交数据三、判断是否登陆:四、如果要登出系统怎么办?销毁 Session 即可。五、设置生存周期对比起Co...
    99+
    2022-12-22
    php登录 session用户登陆
  • PHP怎么实现用户登陆功能
    本篇内容主要讲解“PHP怎么实现用户登陆功能”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“PHP怎么实现用户登陆功能”吧!一.简介由于 Session 是以文本文件形式存储在服务器端的,所以不怕...
    99+
    2023-06-03
  • 怎么在JavaWeb中利用Session实现一个用户登陆注销功能
    今天就跟大家聊聊有关怎么在JavaWeb中利用Session实现一个用户登陆注销功能,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。Cookie:cookie是客户端技术,程序把每个用...
    99+
    2023-05-30
    javaweb session
  • vue实现登陆功能
    本文实例为大家分享了vue实现登陆功能的具体代码,供大家参考,具体内容如下 最近在学习vue,发现了vue的好多坑,比如怎么更好的获取input框输入的值而减少获取dom节点的消耗 ...
    99+
    2022-11-13
  • Android登陆界面用户名检测功能
    今天分享一下登陆界面用户登录名的检测,大家都知道如果在服务器端进行所有用户名的检测是比较浪费资源的。用户每点击一次登陆就要发到服务端去检测,对于服务端来说负荷是比较大的。所以呢...
    99+
    2022-06-06
    界面 用户名 Android
  • Node.js实现登陆注册功能
    本文实例为大家分享了Node.js实现登陆注册的具体代码,供大家参考,具体内容如下 1.服务器端 在项目里创建一个json文件用来存储数据,通过express创建服务器对象,fs模块...
    99+
    2022-11-13
  • nodejs实现登陆验证功能
    本文实例为大家分享了nodejs实现登陆验证的具体代码,供大家参考,具体内容如下 登陆验证需要提交数据,一种使用form表单提交数据,另一种使用原生js提交数据 form表单提交 搭...
    99+
    2022-11-13
  • php如何实现一个用户登录功能
    这篇“php如何实现一个用户登录功能”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“php如何实现一个用户登录功能”文章吧。假...
    99+
    2023-07-05
  • Android 实现用户登陆界面
    EditText & 简单登录界面制作 基本认识 Button是TextView的一个子类,EditView同样也是TextView的子类 其中,EditView是一个可输入内容的组件 参考属...
    99+
    2023-09-28
    android java 开发语言
  • Java Web实现用户登录功能
    文章目录 一、纯JSP方式实现用户登录功能(一)实现思路1、创建Web项目2、创建登录页面3、创建登录处理页面4、创建登录成功页面5、创建登录失败页面6、编辑项目首页 (三)测试结果 ...
    99+
    2023-10-02
    java 前端 servlet
  • Java Web实现自动登陆功能
    Java对自动登陆功能的简单实现,仅用到了servlet和一个filter。第一次写博文,如有不足的地方,敬请指正,谢谢。 登陆界面 <%@ page language="...
    99+
    2022-11-12
  • js实现登陆与注册功能
    本文实例为大家分享了js实现登陆与注册功能的具体代码,供大家参考,具体内容如下 1、首先在phpstudy文件中寻找到一个文件名叫 “www” 的文件  在里面创建html...
    99+
    2022-11-12
  • Express + Session 实现登录验证功能
    1. 写在前面 当我们登录了一个网站,在没有退出登录的情况下,我们关闭了这个网站 ,过一段时间,再次打开这个网站,依然还会是登录状态。这是因为,当我们登录了一个网站,服务器会保存我们的登录状态,直到我们退出...
    99+
    2022-06-04
    功能 Express Session
  • android用户登录功能怎么实现
    要实现Android用户登录功能,可以采取以下步骤:1. 创建一个登录页面,包括用户名和密码的输入框,以及登录按钮。2. 在Main...
    99+
    2023-09-13
    android
  • QT实现用户登录注册功能
    本文实例为大家分享了QT实现用户登录注册的具体代码,供大家参考,具体内容如下 1、login.h #ifndef LOGIN_H #define LOGIN_H #include ...
    99+
    2022-11-13
  • vue.js怎么实现用户登录功能
    这篇文章将为大家详细讲解有关vue.js怎么实现用户登录功能,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。为什么要使用VueVue是一款友好的、多用途且高性能的JavaScript框架,使用vue可以创建...
    99+
    2023-06-14
  • nodejs怎么实现登陆验证功能
    这篇文章主要介绍“nodejs怎么实现登陆验证功能”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“nodejs怎么实现登陆验证功能”文章能帮助大家解决问题。登陆验证需要提交数据,一种使用form表单提...
    99+
    2023-06-30
  • Java 使用Filter实现用户自动登陆
    目录前言1、什么是Filter2、过滤器实现拦截过程3、过滤器与拦截器的不同之处1.过滤器:2.拦截器:3.两者的区别:4、使用Filter实现用户自动登陆5、测试前言 安全,是如...
    99+
    2022-11-12
  • 怎么用asp+Ajax简单客户登陆验证功能
    这篇文章主要讲解了“怎么用asp+Ajax简单客户登陆验证功能”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“怎么用asp+Ajax简单客户登陆验证功能”吧!...
    99+
    2022-10-19
  • 详解使用php来实现简单的用户登录功能
    PHP是一种广泛使用的服务器端脚本语言,被广泛应用于开发Web应用程序,其中实现用户登录功能是一项基础要求。在这篇文章中,我们将介绍如何使用PHP实现简单的用户登录功能。首先,我们需要一个登录页面。下面是一个非常简单的HTML登录页面:&l...
    99+
    2023-05-14
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作