您的位置:首页 > 编程语言 > PHP开发

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

2017-02-07 19:04 281 查看
什么是会话控制

会话控制是一种面向连接的可靠通信方式,通常根据会话控制判断用户登录的行为。

会话控制的思想就是允许服务器跟踪同一个客户端做出的连续请求。

会话控制可以记录客户登录行为,所以不必每浏览一个页面都去重复登录。对于同一个用户的请求还可以在多个页面之间为其共享数据。

两种会话控制方式: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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  php cookie