25 Session判断用户登录

简介: 路老师分享PHP语言知识,帮助大家入门并深入了解PHP。本文介绍如何使用Session管理用户登录,包括创建登录页面、处理登录逻辑、获取Session数据及退出登录功能。纯干货,技术知识分享。

有胆量你就来跟着路老师卷起来! -- 纯干货,技术知识分享

路老师给大家分享PHP语言的知识了,旨在想让大家入门PHP,并深入了解PHP语言。

image.gif 编辑


上一篇我们介绍了Session管理部分的概念,本文通过session来改写一些用户登录,此时的用户名存储到session里。

1 创建login2.php

<!DOCTYPE html>
<html lang="en" class="is-centered is-bold">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>登录页面</title>
  <link href="css/login.css" rel="stylesheet">
</head>
<body>
  <section style="background: transparent;">
    <form class="box py-3 px-4 px-2-mobile"  role="form"  method="post" action="checklogin2.php"  >
      <div class="is-flex is-column is-justified-to-center">
        <h1 class="title is-3 mb-a has-text-centered">
            登录
        </h1>
        <div class="inputs-wrap py-3">
          <div class="control">
            <input class="input" type="text" id="username" name="username" placeholder="用户名"   required></input>
          </div>
          <div class="control">
            <input class="input" type="password" id="password" name="password" placeholder="密码"   required></input>
          </div>
          <div class="control">
            <button class="button is-submit is-primary is-outlined" type="submit">
              提交
            </button>
          </div>
        </div>
      </div>
    </form>
  </section>
  
</body>
</html>

image.gif

注意:上述代码种的样式表和Cookie免密登录的login.css相同。

image.gif 编辑

2 数据提交到checkLogin2.php

单击提交之后,表单会提交到checkLogin2.php文件,并在该文件中处理登录逻辑。登录成功后,使用session_start()函数初始化Session变量,将username存储到Session中。

checkLogin2.php代码如下:(请仔细查看和cookie文章内容的区别)

<?php 
  if(isset($_POST['username']) && isset($_POST['password'])){
    $username = trim($_POST['username']);
    $password = md5(trim($_POST['password']));
    require "config.php";
    try {
      $pdo = new PDO("mysql:host=".DB_HOST.";dbname=".DB_NAME,DB_USER,DB_PWD);
    } catch (PDOException $e) {
      echo $e->getMessage();
    }
    $sql = 'select * from users where username = :username and password = :password';
    $result = $pdo->prepare($sql);
    $result->bindParam(':username',$username);
    $result->bindParam(':password',$password);
    if($result->execute()){
        $rows=$result->fetch(PDO::FETCH_ASSOC);
        if($rows){
          //启动Session
          session_start();
          $_SESSION['username']=$rows['username'];
          echo "<script>alert('恭喜您,登录成功!');
           window.location.href='index2.php';</script>";
        }else{
          echo "<script>alert('用户名或密码错误,登录失败!');
           history.back();</script>";
           exit();
        }
    }else{
      echo "<script>window.location.href='login2.php';</script>";
    }
  }
 
?>

image.gif

3 获取Session中的数据

登录成功后,username存储到Session中,可以使用$_SESSION['username']获取该值,在index2.php文件中,实现代码如下:

<?php
date_default_timezone_set('PRC');
//开启Session
session_start();
//如果Session不存在,那就是第一次访问网站
if(!isset($_SESSION["username"])){
    echo "<script>alert('请先登录');
           window.location.href='login2.php';</script>";
}  
?>
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>欢迎界面</title>
    <link href="https://cdn.bootcdn.net/ajax/libs/twitter-bootstrap/3.4.1/css/bootstrap.min.css" rel="stylesheet">
</head>
<body class="container">
    <div class="jumbotron" style="background-color:#ff27d0">
       <h1>欢迎
          <span style="color:#363636;font-weight:700">
            <?php echo $_SESSION['username']; ?>
          </span>
          登录网站
       </h1>
       <p><a  class="btn btn-warning btn-lg" href="logout2.php" role="button">退出登录</a></p>
    </div>
</body>
</html>

image.gif

image.gif 编辑

4 退出登录logout2.php实现

<?php 
//启动Session
 session_start();
 //清除Session
 unset($_SESSION['username']);
 echo "<script>window.location.href='login2.php';</script>";
?>

image.gif

此文到此接触!

下一篇 Session 高级应用

相关文章
|
机器学习/深度学习 算法 PyTorch
深度学习经典算法PPO的通俗理解
#1 前置知识点 基本概念 [https://www.yuque.com/docs/share/04b60c4c-90ec-49c7-8a47-0dae7d3c78c7?#](https://www.yuque.com/docs/share/04b60c4c-90ec-49c7-8a47-0dae7d3c78c7?#) (部分符合的定义在这里) 要理解PPO,就必须先理解Actor
10265 0
|
2月前
|
前端开发 测试技术 Linux
【2026最新】Apifox官网安装和使用保姆级教程
Apifox 是国产免费 API 一体化协作平台,支持 Win/macOS/Linux,全中文界面。集成文档、调试、Mock 数据与自动化测试,一份定义全链路复用,大幅提升开发效率,个人及中小团队零成本上手。
|
3月前
|
人工智能 监控 机器人
十个 AI Agent 工作流模板,照着搭就能用
AI Agent 不是高级聊天机器人,而是能自动执行完整工作流的智能协作者:读取、核对、决策、起草、更新,仅高风险环节交由人工拍板。文末分享10个开箱即用的模板——从邮件分类、研究简报到CRM补全、QA审查,聚焦解决重复性数字劳动,强调“先设计工作流,再写Prompt”,兼顾效率与可控性。
585 1
十个 AI Agent 工作流模板,照着搭就能用
|
7月前
|
人工智能 Linux API
阿里云/本地部署OpenClaw+自我迭代体系+百炼大模型配置实战,让AI助手告别重复犯错
很多人使用AI助手时都会遇到这样的困境:反复强调不要精简内容,AI依然自作主张压缩信息;同样的格式错误纠正多次仍会出现;长任务中断后进度完全丢失,只能从头再来。单纯的口头提醒毫无作用,核心问题在于AI缺少一套标准化、可落地的自我纠错机制。OpenClaw作为轻量化、可高度定制的AI Agent框架,通过构建完整的自我迭代流程,让AI从被动执行转向主动反思,真正实现持续进化。本文将完整拆解OpenClaw五步自我迭代法,同时提供2026年阿里云部署、本地MacOS/Linux/Windows11部署流程,以及阿里云千问大模型API、免费Coding Plan API配置方案与常见问题解答,帮助大
949 0
|
5月前
|
前端开发 数据库 数据安全/隐私保护
搭建互联网医院系统:医疗资质对接与合规建设解析
互联网医院开发难点不在界面,而在资质合规、多系统对接(HIS/EMR/医保/处方平台)与数据安全。需构建可审计的日志体系、智能接口中台及全流程加密机制,实现医疗协同而非简单线上问诊。
|
6月前
|
JSON 供应链 计算机视觉
淘宝拍立淘接口实战:图像优化、识别调优与避坑代码示例
淘宝拍立淘是深度绑定淘宝供应链的图像搜索接口,具备三大特性:高精度图像特征提取(需≥720×720像素)、识别结果直连供应商资质数据、严格限流(个人日100次)。附完整预处理代码与避坑指南,助识别率从40%提升至85%+。(239字)
|
负载均衡 Linux 调度
Linux多核运行机制(SMP)
Linux多核运行机制(SMP)
Linux多核运行机制(SMP)
|
安全 iOS开发 MacOS
【解决方案】MacOS遇到“无法打开xxx,因为Apple无法检查其是否包含恶意软件”,怎么处理。
【解决方案】MacOS遇到“无法打开xxx,因为Apple无法检查其是否包含恶意软件”,怎么处理。
3165 0
【解决方案】MacOS遇到“无法打开xxx,因为Apple无法检查其是否包含恶意软件”,怎么处理。
|
算法 安全 物联网
AloT 物联网开发实战02 (二)
AloT 物联网开发实战02 (二)
1031 0
AloT 物联网开发实战02 (二)