博客列表 >0610作业2019年06月12日19:41:09

0610作业2019年06月12日19:41:09

Viggo的博客
Viggo的博客原创
2019年06月12日 19:48:45953浏览

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

声明:本文内容转载自脚本之家,由网友自发贡献,版权归原作者所有,如您发现涉嫌抄袭侵权,请联系admin@php.cn 核实处理。
全部评论
文明上网理性发言,请遵守新闻评论服务协议