批改状态:合格
老师批语:
本例将基于session,写一个简单的用户跟踪
用到以下几个文件:

<?phpdefine('DB_HOST','php.edu'); // 数据库域名define('DB_USER','root'); // 数据库用户名define('DB_PWD','root'); // 数据库密码define('DB_PORT','3306'); // 数据库端口号define('DB_TYPE','mysql'); // 数据库类型define('DB_NAME','first'); // 数据库中需要被操作的数据表名define('DB_CHARSET','utf8'); // 编码方式define('DB_DSN',DB_TYPE.":host=".DB_HOST.";dbname=".DB_NAME.";charset=".DB_CHARSET); // 数据源名
<?php// 开启会话session_start();// 引入配置文件require "config.php";// 连接数据库try {$pdo = new PDO(DB_DSN,DB_USER,DB_PWD,[PDO::ATTR_ERRMODE => PDO::ERRMODE_WARNING]);// var_dump($pdo);} catch (Throwable $e) {echo $e->getMessage();} catch (PDOException $e) {echo $e->getMessage();}// 点击退出登录,清空$_SESSION数组if ($_GET['action']=='loginOut') {$_SESSION = [];// print_r($_SESSION);}?><!DOCTYPE html><html lang="en"><head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>登录</title></head><body><h1>用户登录</h1><form action="check.php" method="POST"><div><label for="">账户:</label><input type="text" name="username" id="username"></div><div><label for="password">密码:</label><input type="password" name="password" id="password"></div><button>登录</button></form></body></html>
<?php// 开启会话session_start();// 指定接收数据类型和编码方式header('content-type:text/html;charset=utf-8');// 接收表单过来的数据$username = $_POST['username'];$password = $_POST['password'];// 引入配置文件require "config.php";// 连接数据库try {$pdo = new PDO(DB_DSN,DB_USER,DB_PWD,[PDO::ATTR_ERRMODE => PDO::ERRMODE_WARNING]);// var_dump($pdo);} catch (Throwable $e) {echo $e->getMessage();} catch (PDOException $e) {echo $e->getMessage();}// sql查询语句$sql = "SELECT `id`,`username`,`password` FROM `student` WHERE `username`=? AND `password`=?";// 准备执行$stmt = $pdo->prepare($sql);// var_dump($stmt);// 绑定$stmt->bindParam(1,$username);$stmt->bindParam(2,$password);// 执行$stmt->execute();// 判断:如果验证通过,先清空SESSION,然后再把username储存在SESSION中,便于index.php判断if ($stmt->rowCount()==1) {$_SESSION = [];$_SESSION['username'] = $username;exit("<script>alert('登录成功,点击确定进入主页');location.href='index.php';</script>");}else{exit("<script>alert('用户名或密码输入有误,请重新输入');location.href='login.php';</script>");}
<?php// 开启会话控制session_start();// 引入配置文件require "config.php";// 连接数据库try {$pdo = new PDO(DB_DSN,DB_USER,DB_PWD,[PDO::ATTR_ERRMODE => PDO::ERRMODE_WARNING]);// var_dump($pdo);} catch (Throwable $e) {echo $e->getMessage();} catch (PDOException $e) {echo $e->getMessage();}// print_r($_SESSION);// 1. 如果没有通过login.php登录页面,获取不到$_SESSION['username'],则不能进入主页// 2. 如果直接进入主页,$_SESSION是一个空数组// 3. 所以判断如果SESSION为空数组,说明没有经过登录操作,那么使页面跳转到登录页面if (empty($_SESSION)) {exit("<script>alert('请登录后再进入主页');location.href='login.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></head><body><h1>商城主页</h1><hr><p>欢迎您 <?php echo $_SESSION['username']; ?></p><a href="login.php?action=loginOut">退出账户</a></body></html>

麻烦老师看看写得对不对,因为这不是课堂作业。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号