批改状态:合格
老师批语:
session和cookie完成登入验证\session和cookie的优缺点
<?php
$page_Name='首页';
include 'inc/header.php';//dao导入公共头部
echo '<h1 style="color: green ">首页信息<h1/>';
//判断用户是否已经登录,检测cookie,检测访问网址的文件名称是否为
//$_SERVER['PHP_SELF'] 获取当前网址信息
//basename($_SERVER['PHP_SELF']) 获得当前页面的文件名称
if (isset($_COOKIE['id']) && basename($_SERVER['PHP_SELF'])!='logout.php')
{
echo '<a href="logout.php">退出</a>';
}
else
{
echo '<a href="login_page.php" style="color: blue">登录</a>';
}
include 'inc/footer.php';//导入公共底部点击 "运行实例" 按钮查看在线实例
<?php
$page_Name='用户登录';
include 'inc/header.php';
//错误 信息显示
if (isset($errors) && !empty($errors)){
$errors_msg='<p style="color: red">';
foreach ($errors as $msg)
{
$errors_msg.=$msg.'<br>';
};
echo $errors_msg.'</p>';
}
?>
<h2>用户登录</h2>
<form action="login.php" method="post">
<p>
<lable for="user">账号:</lable>
<input type="text" name="user" id="user" value="<?php echo isset($_POST['user'])?$_POST['user']:'' ?>" placeholder="用户名或手机号!">
<!-- echo isset($_POST['user'])?$_POST['user']:''-->
<!-- //value中加入后,页面刷新和提交出错输入值都不会消失;-->
</p>
<p>
<lable for="password">密码:</lable>
<input type="password" name="password" id="password" value="<?php echo isset($_POST['password'])?$_POST['password']:''?>" placeholder="请输入密码!">
</p>
<p>
<button type="submit" name="submit" id="submit">登录</button>
<button type="reset" name="reset" id="reset">重置</button>
</p>
<a href="index.php">返回首页</a>
</form>
<?php
include 'inc/footer.php';
?>点击 "运行实例" 按钮查看在线实例
<?php
//启动会话
session_start();
$page_Name='用户登录';
//判断当前用户的请求是否POST请求
if ($_SERVER['REQUEST_METHOD']=='POST'){
//判断请求类型是否为POST
require 'inc/function.php';
//链接数据库
require 'inc/connect.php';
//验证登录
list($check,$data)=check_login($dbc,$_POST['user'],$_POST['password']);
//检测是否验证通过
if ($check){
//设置session
$_SESSION['id']=$data['id'];
$_SESSION['name']=$data['name'];
//跳转
redirect_user('loggedin.php');
}
else
{
$errors=$data;
}
//关闭数据库
mysqli_close($dbc);
}
include 'login_page.php';点击 "运行实例" 按钮查看在线实例
<!--<h2>登陆成功!</h2>-->
<?php
//启动会话
session_start();
//判断用户是否登陆
if (!isset($_SESSION['id'])){
require 'inc/function.php';
redirect_user();
}
$page_Name='登陆成功页面';
include 'inc/header.php';//dao导入公共头部
//heredoc
echo <<< "WELCOME"
<h2 style="color:red">登录成功<h2>
<p>欢迎您:亲爱的{$_SESSION['name']}</p>
<p><a href="logout.php">退出</a></p>
WELCOME;
include 'inc/footer.php';//导入公共底部点击 "运行实例" 按钮查看在线实例
<?php
//启动会话
session_start();
//判断用户是否登陆
if (!isset($_SESSION['id'])){
require 'inc/function.php';
redirect_user();
}
else
{
//退出登录,删除session
unset($_SESSION['id']);
session_destroy();//删除服务器的信息
setcookie('PHPSESSID','',time()-3600);
}
$page_Name='登陆成功页面';
include 'inc/header.php';//dao导入公共头部
//heredoc
echo <<< "WELCOME"
<h2 style="color:red">退出成功<h2>
<p><a href="login.php">登录</a></p>
WELCOME;
include 'inc/footer.php';//导入公共底部点击 "运行实例" 按钮查看在线实例
<?php
//公共函数库
//用户登录成功的跳转
function redirect_user($page='index.php')
{
$url='http://'.$_SERVER['HTTP_HOST'].dirname($_SERVER['PHP_SELF']);
//WINDOWS \
//MAC /
//如果有,去掉URL右侧的斜线
$url=rtrim($url,'/\\');
//添加上当前脚本名称
$url.='/'.$page;
//跳转到指定地址
header('Location:'.$url);
exit();
}
//用户的验证函数
function check_login($dbc,$user='',$password)
{
//初始化一个保持错误信息的数组
$errors =[];
//非空验证
if (empty($user)){
$errors[]='用户名不能为空';
}
else
{
$u= mysqli_real_escape_string($dbc,trim($user));
}
//密码非空验证
if (empty($password)){
$errors[]='密码不能为空';
}
else
{
$p=mysqli_real_escape_string($dbc,$password);
}
//到数据表中进行数据验证
if (empty($errors))
{
//根据用户和密码进行验证,返回当前用户的id,name
$sql="SELECT `id`,`name` FROM `user` WHERE `user`='$u' AND `password`='$p'";
// echo $sql;die();
//执行查询
$res=mysqli_query($dbc,$sql);
// var_dump($res);
echo '<hr>';
if (mysqli_num_rows($res)) {
$row=mysqli_fetch_array($res,MYSQLI_ASSOC);
//返回查询结果
return [true,$row];
// print_r($row);
}
else{
$errors[]='用户和密码不正确,请重新输入';
return [false,$errors];
}
}
}点击 "运行实例" 按钮查看在线实例
<?php
$dbc=mysqli_connect('127.0.0.1','root','root','php');
if (mysqli_connect_errno())
{
die('连接失败'.mysqli_connect_errno());
}点击 "运行实例" 按钮查看在线实例
-----------------------------------------------------------------------------------------------------
<?php
//启动会话
session_start();
$page_Name='首页';
include 'inc/header.php';//dao导入公共头部
echo '<h1 style="color: green ">首页信息<h1/>';
//判断用户是否已经登录,检测cookie,检测访问网址的文件名称是否为
//$_SERVER['PHP_SELF'] 获取当前网址信息
//basename($_SERVER['PHP_SELF']) 获得当前页面的文件名称
if (isset($_SESSION['id']) && basename($_SERVER['PHP_SELF'])!='logout.php')
{
echo '<a href="logout.php">退出</a>';
}
else
{
echo '<a href="login_page.php" style="color: blue">登录</a>';
}
include 'inc/footer.php';//导入公共底部点击 "运行实例" 按钮查看在线实例

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号