登录验证的整个过程实现,利用cookie和session判断是否为登录状态。
login.php -> check.php -> admin.php -> logout -> login.php
学习了 isset()函数命令 可以判断变量值是否为空
登录页面
<?php
//判断是否登陆,登陆了就直接跳转到后台页面
if (isset($_COOKIE['username'])){
echo "<script>alert('你已经登陆啦!直接进入后台!');location.href='admin.php'</script>";
}
?>
<!doctype html>
<html lang="zh-cn">
<head>
<meta charset="UTF-8">
<title>Document</title>
</head>
<body>
<form action="check.php" method="post" onsubmit="return isEmpty();">
<p>
<label for="email">邮箱:</label>
<input type="email" name="email" id="email">
</p>
<p>
<label for="password">密码:</label>
<input type="password" name="password" id="password">
</p>
<p>
<button>登陆</button>
</p>
</form>
<script>
function isEmpty() {
let email = document.getElementById('email').value;
let password = document.getElementById('password').value;
// alert(email.length + '...' +password.length);
if (email.length === 0 || password.length === 0){
alert('邮箱或密码不能为空!');
return false;
}
}
</script>
</body>
</html>点击 "运行实例" 按钮查看在线实例
检查也没check.php
<?php
$email = $_POST['email'];
$password = sha1($_POST['password']);//可以这样加密 sha1(md5($_POST['password'].'hello'))
if (strlen($email) === 0 || strlen($password) === 0){
echo "<script>alert('非法登陆!');location.assign('login.php')</script>";
die;
}
//1.连接数据库
require_once 'inc/connection.php';
//2.配置SQL脚本
$sql = 'SELECT * FROM `user` WHERE `email` = :email AND `password` = :password LIMIT 1';
//3.预处理prepare
$stmt = $pdo->prepare($sql);
//4.绑定变量 执行sql
//$email ='';
//$password = '';
//$stmt->bindParam(':email',$email,PDO::PARAM_STR);
//$stmt->bindParam(':password',$password,PDO::PARAM_STR_CHAR);
//$Ob = $stmt->execute();
//另一种方法直接在执行的时候绑定变量,参数为数组方式
$Ob = $stmt->execute([':email'=>$email,':password'=>$password]);
//获取数据库信息
$user = $stmt->fetch(PDO::FETCH_ASSOC);//查询到的话返回结果是真bool型 没找到证明账号密码不对
//print_r($user ? '找到了' : '没找到');
if (!($user)){
echo "<script>alert('账号或密码错误!');location.href='login.php';</script>";
die;
}
//账号密码正确的情况下 设置浏览器的cookie 并跳转到后台页面
setcookie('username',$user['username']);
echo "<script>alert('登陆成功!');location.href='admin.php';</script>";
//Array
//(
// [userid] => 1
// [email] => admin@php.cn
//[password] => 7c4a8d09ca3762af61e59520943dc26494f8941b
//[username] => admin
//)
//关闭数据库连接
$pdo = null;点击 "运行实例" 按钮查看在线实例
后台页面admin.php
<?php
//判断是否登陆,登陆了才可以访问该页面
if (!(isset($_COOKIE['username']))){
echo "<script>alert('你还没有登陆,不允许访问该页面!');location.href='login.php'</script>";
}
?>
<!doctype html>
<html lang="zh-cn">
<head>
<meta charset="UTF-8">
<title>后台首页</title>
</head>
<body>
<h2>后台首页</h2>
<?php
echo $_COOKIE['username'];
?>
<a href="logout.php">退出</a>
</body>
</html>点击 "运行实例" 按钮查看在线实例
退出页面logout.php
<?php
//先判断是否为登陆状态,如果为登陆状态才可以退出。否则提示你还没有登陆
if (isset($_COOKIE['username'])){
setcookie('username',null,time()-1);
echo "<script>alert('已经成功退出!');location.href='login.php';</script>";
} else {
// username的值等于空 意思就是没有username
echo "<script>alert('你还没有登陆!');location.href='login.php';</script>";
}点击 "运行实例" 按钮查看在线实例
session和cookie功能一样,改成session 只需要把每个位置的cookie替换成session,
然后在每个页面添加seesion_start()开启session会话。
在logout.php中 退出登录的地方设置 session_destroy();删除服务器的session文件
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号