PHP会话控制

本文介绍了HTTP协议中的Cookie和Session的概念及使用方法。Cookie是存储在客户端的文本信息,而Session则将用户信息存储在服务器端。通过示例代码展示了如何设置、读取和销毁Cookie,以及如何利用Cookie和Session进行登录验证。同时,指出了Cookie的安全隐患,并提供了注销Session的代码片段。
摘要由CSDN通过智能技术生成

会话控制

浏览网页时,使用的是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'>";
?>

image-20210719163720227

image-20210719163733966

image-20210719163745031

image-20210719163820940

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值