会话控制
浏览网页时,使用的是HTTP协议
- 客户端发出请求
- 服务端给出响应
COOKIE
COOKIE是存储在客户端的一段文本,文件或字符串
每次客户端浏览器在发出请求时,自动都会携带Cookie信息
Cookie数据存放于客户端浏览器上,以键值对的形式存在
性质
name → Cookie名称
value → Cookie的值
expire → 过期时间
path → Cookie的有效路径
domain → Cookie的域名
secure → 设置Cookie是否只通过https连接传输
httponly → 仅通过http协议访问,不能通过js访问
Cookie信息
通过控制台(F12)查看
Cookie信息放在浏览器端,并不安全可以被窃取和欺骗
设置Cookie
setcookie(name,value,expire(默认为关闭浏览器失效),path,domain,secure,httponly)
接收Cookie信息
$_COOKIE
注销Cookie
setcookie(name,$_COOKIE[‘name’],time()-3600);
SESSION
依赖Cookie实现,将用户信息存放在服务器端
session id → 客户端发送请求时,服务器会生成一个session对象
session对象生成一个对应的sessionID返回给客户端,客户端再次请求时在Cookie中携带sessionID
服务器对sessionID进行验证
session_start(); //开启session机制
session_id(); //获取sessionID
$_SESSION //存储用户session信息,赋的值存储在服务器端。在注册页对$_SESSION赋值,在其他页面对$_SESSION读取
session_destory(); //删除服务器的session数据,但cookie依旧存在
使用Cookie与Session进行登入验证
index.php
<meta charset="UTF-8">
<h1>论坛</h1>
<?php
session_start();
if(isset($_SESSION['userName']) && $_SESSION['userName'] == "asd"){
echo "欢迎您,{$_SESSION['userName']}";
echo "<a href='logout.php'>注销</a>";
}else{
echo "请<a href='login.html'>登入</a>";
}
?>
login.html
<html>
<meta charset="utf-8">
<form
action="./post.php"
method="post"
target="_blank"
>
用户名:<input type="text" name="userName">
密码:<input type="password" name="userPd">
<input type="submit" name="userSubmit" value="登入">
</form>
</html>
post.php
<?php
session_start();
if(isset($_POST['userSubmit']) ){
if(
isset($_POST['userName']) &&
isset($_POST['userPd']) &&
$_POST['userName'] == "asd" &&
$_POST['userPd'] == "123"
){
$_SESSION['userName'] = $_POST['userName'];
echo "登入成功<a href='./index.php'>返回首页</a>";
}else{
echo "用户名或密码错误,请<a href='./login.html'>重新登入</a>";
}
}else{
echo "请通过表单登入";
}
?>
logout.php
<?php
session_start();
session_destroy();
echo "<meta http-equiv='refresh' content='0;url=./index.php'>";
?>