Correction status:Uncorrected
Teacher's comments:
cookie
<?php // 公共函数 // 用户登录成功后跳转到首页 function jump_index($page = 'index.php') { // 默认URL // $_SERVER 是一个包含了诸如头信息(header)、路径(path)、以及脚本位置(script locations)等等信息的数组 $url = 'http://'.$_SERVER['HTTP_HOST'].dirname($_SERVER['PHP_SELF']); // 去掉url右边的斜线 $url = rtrim($url, '/\\'); // 添加上当前脚本名称 $url .= '/'.$page; //跳转到指定地址 header('Location:' .$url); exit(); } // 验证用户登录 function login($sql, $email, $password) { // 建立一个保持错误信息的数组 $errors = []; // 邮箱验证 if(empty($email)){ $errors = '邮箱不能为空!'; } else { // 去掉特殊字符 $e = mysqli_real_escape_string($sql,trim($email)); } // 密码验证 if(empty($password)){ $errors = '密码不能为空!'; } else { // 去掉特殊字符 $p = mysqli_real_escape_string($sql,trim($password)); } // 到数据库中进行数据验证 if (empty($errors)) { // 根据邮箱和密码进行验证,并返回id, name $que = "SELECT `id`,'name' FROM `login` WHERE `email`='$e' AND `password`='$p'"; // 执行查询 $res = mysqli_query($sql, $que); if (mysqli_num_rows($res) == 1) { $row = mysqli_fetch_array($res, MYSQLI_ASSOC); //返回查询结果 return [true, $row]; } else { $errors[] = '邮箱或密码不正确,请重新输入'; } return [false, $errors]; } }
点击 "运行实例" 按钮查看在线实例
<?php //登录成功页面 //判断用户是否登录? if (!isset($_COOKIE['id'])) { require 'common/fun.php'; jump_index(); } $page_title = '登录成功'; //导入页面的公共头部 include 'common/head.php'; //heredoc echo <<< "WELCOME" <h2 style="color:red">登录成功</h2> <p>欢迎您: 亲爱的 {$_COOKIE['name']}</p> <p><a href="logout.php">退出</a></p> WELCOME; //导入页面的公共底部 include 'common/footer.php';
点击 "运行实例" 按钮查看在线实例
session
<?php // 公共函数 // 用户登录成功后跳转到首页 function jump_index($page = 'index.php') { // 默认URL // $_SERVER 是一个包含了诸如头信息(header)、路径(path)、以及脚本位置(script locations)等等信息的数组 $url = 'http://'.$_SERVER['HTTP_HOST'].dirname($_SERVER['PHP_SELF']); // 去掉url右边的斜线 $url = rtrim($url, '/\\'); // 添加上当前脚本名称 $url .= '/'.$page; //跳转到指定地址 header('Location:' .$url); exit(); } // 验证用户登录 function login($sql, $email, $password) { // 建立一个保持错误信息的数组 $errors = []; // 邮箱验证 if(empty($email)){ $errors = '邮箱不能为空!'; } else { // 去掉特殊字符 $e = mysqli_real_escape_string($sql,trim($email)); } // 密码验证 if(empty($password)){ $errors = '密码不能为空!'; } else { // 去掉特殊字符 $p = mysqli_real_escape_string($sql,trim($password)); } // 到数据库中进行数据验证 if (empty($errors)) { // 根据邮箱和密码进行验证,并返回id, name $que = "SELECT `id`,'name' FROM `login` WHERE `email`='$e' AND `password`='$p'"; // 执行查询 $res = mysqli_query($sql, $que); if (mysqli_num_rows($res) == 1) { $row = mysqli_fetch_array($res, MYSQLI_ASSOC); //返回查询结果 return [true, $row]; } else { $errors[] = '邮箱或密码不正确,请重新输入'; } return [false, $errors]; } }
点击 "运行实例" 按钮查看在线实例
<?php //登录成功页面 //启动会话 session_start(); //判断用户是否登录? if (!isset($_SESSION['id'])) { require 'common/fun.php'; jump_index(); } $title = '登录成功'; //导入页面的公共头部 include 'common/head.php'; //heredoc echo <<< "WELCOME" <h2 style="color:red">登录成功</h2> <p>欢迎您: 亲爱的 {$_SESSION['name']}</p> <p><a href="logout.php">退出</a></p> WELCOME; //导入页面的公共底部 include 'common/footer.php';
点击 "运行实例" 按钮查看在线实例
cookie与session的优点和缺点:优点:一个网站内只需登录一次即可浏览器全站,不用来来回回登录。缺点:如果cookie被人拦截了,就可以取得所有的session信息。