PHP中的会话控制(一):cookie

什么是会话控制

会话控制是一种面向连接的可靠通信方式,通常根据会话控制判断用户登录的行为。
会话控制的思想就是允许服务器跟踪同一个客户端做出的连续请求。
会话控制可以记录客户登录行为,所以不必每浏览一个页面都去重复登录。对于同一个用户的请求还可以在多个页面之间为其共享数据。
两种会话控制方式:cookie和session。

什么是cookie

cookie是一种有服务器发送给客户端的一段信息,储存在客户端浏览器的内存或硬盘上,在客户对该服务请求时发回它。如此不必在连接服务器时,再同过网络传输处理这些信息,进而提高网页处理效率,降低服务器负担。

PHP中基于cookie的用户登录案例

连接数据库文件conn.php,代码如下:

<?php
 $mysqli = new mysqli("localhost", "root", "root", "demo");
 ?>

用户登录页面login.php,处理登录行为,如果登陆成功,则将登陆信息保存到cookie,代码如下:

<?php
    if(isset($_POST['sub'])){       //判断是否登录
        include "conn.php";     //连接数据库文件
        $sql = "select id from user where username='{$_POST["username"]}' and password = '".md5($_POST['password'])."'";       //sql查询语句
        $result = $mysqli->query($sql);          //查询结果记录集
        if($result->num_rows > 0){               //判断是否登录成功
            $row = $result->fetch_assoc();
            $time = time() + 60*60*24;           //定义cookie保存时间
            //保存登录信息到cookie
            setcookie("username", $_POST['username'], $time);
            setcookie("uid", $row["id"], $time);
            setcookie("islogin", true, $time);
            header("location:index.php");          //跳转到登陆成功界面
        }
        echo "用户名密码有误!";
    }
?>
<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <title>登陆</title>
    <link rel="stylesheet" href="">
</head>
<body>
    <form action="" method="post">
        <table align="center" border="1" width="300">
         <caption><h1>用户登录</h1></caption>
            <tr>
                <th>用户名</th>
                <td><input type="text" name="username" /></td>
            </tr> 
            <tr>
                <th>密码</th>
                <td><input type="password" name="password" /></td>
            </tr> 
            <tr>

                <td colspan="2" align="center">
                    <input type="submit" name="sub" value="登陆" />
                </td>
            </tr> 
        </table>
    </form>
</body>
</html>

判断登录是否成功common.php,如果不成功,依然返回登陆界面,代码如下:

<?php
/**
 * @Author: mrhengbing
 * @Email:  415671062@qq.com
 * @Create time:   2016-12-02 15:50:17
 * @Last Modified by:   mrhengbing
 * @Last Modified time: 2016-12-02 15:51:07
 */

if(!$_COOKIE['islogin']){
    header("location:login.php");
}
?>

登陆成功页面index.php,可以从cookie中读取登录信息,代码如下:

<?php
    header("Content-type:text/html;charset=utf-8"); //设置页面内容是html,编码格式是utf-8
    include "common.php";          //判断是否成功登录
    include "conn.php";            //连接数据库

    echo "用户<b>".$_COOKIE["username"]."</b>,你好!";
?>
<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <title></title>
    <link rel="stylesheet" href="">
</head>
<body>
    <a href="logout.php">退出登录</a>
</body>
</html>

退出登录页面logout.php,该页面清除cookie信息,代码如下:

<?php
    include "common.php";
    $username = $_COOKIE["username"];    //提取cookie信息

    //清除cookie信息
    setcookie("username");
    setcookie("uid", "", time()-3600);
    setcookie("islogin");

    echo $username." 再见!";
?>
<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <title></title>
    <link rel="stylesheet" href="">
</head>
<body>
    <a href="login.php">重新登陆!</a>
</body>
</html>

ps:关于setcookie()的用法参考:PHP:setcookie

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值