博客列表 >session和cookie完成登入验证2018/08/31

session和cookie完成登入验证2018/08/31

南风的博客
南风的博客原创
2018年09月03日 19:06:30755浏览

cookie

header.php

实例

<!doctype html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport"
          content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>
        <?php
        echo isset($page_title)?$page_title:'默认标题';
        ?>
    </title>
</head>
<body>
   <h1>我是页面的头部</h1>
</body>
</html>

运行实例 »

点击 "运行实例" 按钮查看在线实例

footer.php

实例

<h1>我是页面的底部</h1>
</body>
</html>

运行实例 »

点击 "运行实例" 按钮查看在线实例

function.php

实例

<?php
/**
 * 公共函数库
 * */

 //用户登陆成功之后的跳转
function redirect_user($page='index.php')
{
    //默认url
    $url='http://'.$_SERVER['HTPP_HOST'].dirname($_SERVER['PHP_SELF']);
}
//如果有,去掉url右侧的斜线
$url = rtrim($url, '/\\');

//添加上当前脚本名称
$url .= '/'.$page;

//跳转到指定地址
header('Location:' .$url);
exit();

//验证用户登录
function check_login($dbc,$email='',$password)
{
    //初始一个保存错误信息的数组
    $error=[];

    //非空验证
    if (empty($email)){
        $error[]='邮箱不能为空';
    }else{
        $e=mysqli_real_escape_string($dbc,trim($email));
    }

    //非空验证
    if(empty($password)){
        $error[]='密码不能为空';
    }else{
        $p= mysqli_real_escape_string($dbc,trim($password));
    }

    //到表中进行数据验证
    if(empty($error)){
        //根据邮箱和密码进行验证,并返回id,name
        $sql="SELECT `id`,`name`FROM`user` WHERE `email`='$e'AND`password`=sha1('$p')";
    //返回查询结果
        return [true, $row];
    }else{
        $errors[]='邮箱或密码不正确,请重新输入';
    }
    return[false,$error];
}

运行实例 »

点击 "运行实例" 按钮查看在线实例

connect.php

实例

<?php
/**
 * 连接数据库
 */
$dbc=mysqli_connect('127.0.0.1','root','root','php');
//判断是否成功
if(mysqli_connect_errno()){
    die('连接失败'.mysqli_connect_error());
}

运行实例 »

点击 "运行实例" 按钮查看在线实例

demo1.php

实例

<?php
// cookie

//1.设置cookie
//setcookie('username','admin',time()+3600);

//2.查看cookie: 超全局系统变量[数组]: $_COOKIE
//echo '<br>',$_COOKIE['username'];

//3.删除cookie
setcookie('username','admin',time()-3600);

echo '<br>',$_COOKIE['username'];

运行实例 »

点击 "运行实例" 按钮查看在线实例

index.php

实例

<?php
$page_title='首页';
//加载公共头部
include'inc/header.php';

echo '<h2 style="color:red">我是首页</h2>';
//判断当前用户状态:是否登录
if(isset($_COOKIE['id']) && basename($_SERVER['PHP_SELF'])!='logout.php'){
    echo '<a href="logout.php">退出</a>';
}else{
    echo '<a href="login.php">登录</a>';
}

//导入页面的公共底部
include 'inc/footer.php';

运行实例 »

点击 "运行实例" 按钮查看在线实例

loggedin.php

实例

<?php
//登录成功页面

//判断用户是否登录?
if (!isset($_COOKIE['id'])) {
    require 'inc/function.php';
    redirect_user();
}

$page_title = '登录成功';
//导入页面的公共头部
include 'inc/header.php';

//heredoc
echo <<< "WELCOME"
<h2 style="color:red">登录成功</h2>
<p>欢迎您: 亲爱的 {$_COOKIE['name']}</p>
<p><a href="logout.php">退出</a></p>
WELCOME;



//导入页面的公共底部
include 'inc/footer.php';

运行实例 »

点击 "运行实例" 按钮查看在线实例

login.php

实例

<?php
if($_SERVER['REQUEST_METHOD']=='POST'){
    //加载函数库
    require 'inc/function.php';
    //连接数据库
    require 'inc/connect.php';

    //验证登录
    list($check,$data) =check_login($dbc,$_POST['email'],$_POST['password']);

    //检测是否验证通过
    if($check){
        //设置cookie
        setcookie('id',$data['id']);
        setcookie('name',$data['name']);
        //跳转
        redirect_user('loggedin.php');
    }else{
        $error=$data;
    }
    //关闭
    mysqli_close($dbc);
}
include 'login_page.php';

运行实例 »

点击 "运行实例" 按钮查看在线实例

login_page.php

实例

<?php
$page_title='用户登录';
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 style="...">用户登录</h2>
<form action="login.php" method="post">
    <p>
        <label for="email">邮箱:</label>
        <input type="email" name="email" id="email" value="<?php echo isset($_POST['email'])?$_POST['email']:''?>">
    </p>
    <p>
        <label for="email">密码:</label>
        <input type="password" name="password" id="password" value="<?php echo isset($_POST['password'])?$_POST['password']:''?>">
    </p>
    <p>
       <button type="submit" name="submit" id="sumbit">登录</button>
    </p>
</form>
<?php include 'inc/footer.php'?>

运行实例 »

点击 "运行实例" 按钮查看在线实例

logout.php

实例

<?php
//登出成功页面

//判断用户是否登录?
if (!isset($_COOKIE['id'])) {
    require 'inc/function.php';
    redirect_user();
}else{
    //退出登录,删除cookie
    setcookie('id','',time()-3600);
    setcookie('name','',time()-3600);
}
$page_title='退出登录';
//导入页面的公共头部
include'inc/header.php';

//heredoc
echo <<< "WELCOME"
<h2 style="color:red">退出成功</h2>

<p><a href="login.php">登录</a></p>
WELCOME;



//导入页面的公共底部
include 'inc/footer.php';

运行实例 »

点击 "运行实例" 按钮查看在线实例

手写

QQ截图20180903190535.png

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