博客列表 >session和cookie完成登入验证\session和cookie的优缺点—2018年9月4日00时14分

session和cookie完成登入验证\session和cookie的优缺点—2018年9月4日00时14分

耗子的博客
耗子的博客原创
2018年09月05日 00:22:04794浏览

session和cookie完成登入验证\session和cookie的优缺点

实例index

<?php

$page_Name='首页';
include 'inc/header.php';//dao导入公共头部

echo '<h1 style="color: green ">首页信息<h1/>';

//判断用户是否已经登录,检测cookie,检测访问网址的文件名称是否为

//$_SERVER['PHP_SELF'] 获取当前网址信息
//basename($_SERVER['PHP_SELF']) 获得当前页面的文件名称


if (isset($_COOKIE['id']) && basename($_SERVER['PHP_SELF'])!='logout.php')
{
    echo '<a href="logout.php">退出</a>';
}
else
{
    echo '<a href="login_page.php" style="color: blue">登录</a>';
}


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

运行实例 »

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

实例login_page

<?php
$page_Name='用户登录';
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>用户登录</h2>
<form action="login.php" method="post">
    <p>
        <lable for="user">账号:</lable>
        <input type="text" name="user" id="user" value="<?php echo isset($_POST['user'])?$_POST['user']:'' ?>" placeholder="用户名或手机号!">
        <!--       echo isset($_POST['user'])?$_POST['user']:''-->
<!--        //value中加入后,页面刷新和提交出错输入值都不会消失;-->
    </p>
    <p>
        <lable for="password">密码:</lable>
        <input type="password" name="password" id="password" value="<?php echo isset($_POST['password'])?$_POST['password']:''?>" placeholder="请输入密码!">
    </p>
    <p>
        <button type="submit" name="submit" id="submit">登录</button>
        <button type="reset" name="reset" id="reset">重置</button>
    </p>

    <a href="index.php">返回首页</a>
</form>
<?php
include 'inc/footer.php';
?>

运行实例 »

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

实例login

<?php

//启动会话
session_start();
$page_Name='用户登录';
//判断当前用户的请求是否POST请求

if ($_SERVER['REQUEST_METHOD']=='POST'){
    //判断请求类型是否为POST

    require 'inc/function.php';

    //链接数据库
    require 'inc/connect.php';


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

     //检测是否验证通过
    if ($check){
        //设置session
        $_SESSION['id']=$data['id'];
        $_SESSION['name']=$data['name'];

        //跳转
        redirect_user('loggedin.php');

    }
    else
    {
        $errors=$data;
    }
    //关闭数据库
    mysqli_close($dbc);

}

include 'login_page.php';

运行实例 »

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

实例loggedin

<!--<h2>登陆成功!</h2>-->
<?php


//启动会话
session_start();


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

$page_Name='登陆成功页面';
include 'inc/header.php';//dao导入公共头部

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



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

运行实例 »

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

实例loginout

<?php
//启动会话
session_start();




//判断用户是否登陆
if (!isset($_SESSION['id'])){
    require 'inc/function.php';
    redirect_user();
}
else
{
    //退出登录,删除session
    unset($_SESSION['id']);
    session_destroy();//删除服务器的信息

    setcookie('PHPSESSID','',time()-3600);
}

$page_Name='登陆成功页面';
include 'inc/header.php';//dao导入公共头部



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

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



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

运行实例 »

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


实例function

<?php

//公共函数库


//用户登录成功的跳转

function redirect_user($page='index.php')
{
    $url='http://'.$_SERVER['HTTP_HOST'].dirname($_SERVER['PHP_SELF']);


    //WINDOWS  \
    //MAC /

    //如果有,去掉URL右侧的斜线
    $url=rtrim($url,'/\\');

    //添加上当前脚本名称

    $url.='/'.$page;

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


//用户的验证函数

function check_login($dbc,$user='',$password)
{
    //初始化一个保持错误信息的数组

    $errors =[];

    //非空验证
    if (empty($user)){
        $errors[]='用户名不能为空';

    }
    else
    {
        $u= mysqli_real_escape_string($dbc,trim($user));

    }

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

    }

    //到数据表中进行数据验证
    if (empty($errors))
    {
        //根据用户和密码进行验证,返回当前用户的id,name

        $sql="SELECT `id`,`name` FROM `user` WHERE `user`='$u' AND `password`='$p'";
//        echo  $sql;die();
        //执行查询
       $res=mysqli_query($dbc,$sql);
//       var_dump($res);
       echo '<hr>';
       if (mysqli_num_rows($res)) {
           $row=mysqli_fetch_array($res,MYSQLI_ASSOC);
           //返回查询结果
           return [true,$row];
//           print_r($row);
       }
       else{
           $errors[]='用户和密码不正确,请重新输入';
           return [false,$errors];
       }

    }

}

运行实例 »

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

实例connect

<?php

$dbc=mysqli_connect('127.0.0.1','root','root','php');

if (mysqli_connect_errno())
{
    die('连接失败'.mysqli_connect_errno());
}

运行实例 »

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


-----------------------------------------------------------------------------------------------------

实例session  index

<?php

//启动会话
session_start();


$page_Name='首页';
include 'inc/header.php';//dao导入公共头部

echo '<h1 style="color: green ">首页信息<h1/>';

//判断用户是否已经登录,检测cookie,检测访问网址的文件名称是否为

//$_SERVER['PHP_SELF'] 获取当前网址信息
//basename($_SERVER['PHP_SELF']) 获得当前页面的文件名称


if (isset($_SESSION['id']) && basename($_SERVER['PHP_SELF'])!='logout.php')
{
    echo '<a href="logout.php">退出</a>';
}
else
{
    echo '<a href="login_page.php" style="color: blue">登录</a>';
}

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

运行实例 »

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

01.jpg

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