Blogger Information
Blog 20
fans 0
comment 1
visits 14813
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
session和cookie完成登入验证2018/08/31
南风的博客
Original
757 people have browsed it

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

Correction status:qualified

Teacher's comments:
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