Blogger Information
Blog 41
fans 0
comment 0
visits 29508
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
0610作业2019年06月12日19:41:09
Viggo的博客
Original
947 people have browsed it

登录验证的整个过程实现,利用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文件

Statement of this Website
The copyright of this blog article belongs to the blogger. Please specify the address when reprinting! If there is any infringement or violation of the law, please contact admin@php.cn Report processing!
All comments Speak rationally on civilized internet, please comply with News Comment Service Agreement
0 comments
Author's latest blog post