Day36PHPcookie和session

会话控制

浏览网页的时候,使用的是HTTP协议
客户端发送请求
服务的给出相应

COOKIE
存储在客户端的一段文本,文件|字符串(大多数情况下,字符串)
服务器发给客户端
每次客户端浏览器 在发出请求的时候,自动都会携带Cookie信息
键值对

cookie性质
name Cookie的名称
value Cookie的值
expire 过期时间
path Cookie的有效路径
domain Cookie的域名
secure https
httponly 仅仅通过http 协议访问,不能通过JS访问

设置Cookie的语句
setcookie();
接受Cookie 的信息
$_COOKIE

窃取和欺骗

浏览器Cookie 信息
F12(存储器)

session 机制
依赖Cookie实现
session id

session_start();
$_SESSION 完成对SESSION 数据的读写

源码:

1.php(设置Cookie)
1.<?php 2.setcookie("name","GGG"); 3.?>

2.phphc( C O O K I E ) 1. < ? p h p 2. v a r d u m p ( _COOKIE) 1.<?php 2.var_dump( COOKIE)1.<?php2.vardump(_COOKIE);
3.?>

使用Cookie实现对用户登录的验证
index.php
1.
2.

刹那芳华论坛


3.<?php 4.if(isset($_COOKIE['name'])){ 5. echo "欢迎您,{$_COOKIE['name']} 注销"; 6.}else{ 7. echo " 请登录"; 8.} 9.?>
login.php
1.
2.<?php 3.if(isset($_POST['userSubmit'])){ 4. if( 5. isset($_POST['userName']) && 6. $_POST['userName'] == "GGG" && 7. isset($_POST['userPass']) && 8. $_POST['userPass'] == "123456" 9. ){ 10. if(setcookie("name","GGG")){ 11. echo "登录成功, 返回首页"; 12. }else{ 13. echo "设置Cookie错误!"; 14. } 15. }else{ 16. echo "用户或密码错误, 请重新登录"; 17. } 18.}else{ 19. $html=<<

登录(login.php)

注销(logout.php)

Cookie存在的风险实验
窃取Cookie,直接登入
在一个浏览器上登入

打开另外一个浏览器

现在,我们将第一个浏览器的页面注销,cookie信息被清空

但在另一个浏览器上没有收到任何影响

1.php(开启session机制)
1.<?php 2.session_start();//开启session 机制 3.$_SESSION['name']="GGG"; 4.$_SESSION['age']=24; 5.?>

会在服务器端生成一个文件:

相比之下session要相对安全

2.php()
1.<?php 2.session_start(); 3.var_dump($_SESSION); 4.?>

打开服务器端的sess文件,会看到里面存放了我们前面设置的信息

使用session机制实现用户登入验证
index.php
1.<?php 2.session_start();//session_start()建议写在最前面 3.?>
4.
5.

刹那芳华论坛


6.<?php 7.if(isset($_SESSION['userName']) && $_SESSION['userName'] == 8."GGG"){ 9. echo "欢迎您,{$_SESSION['userName']} 10. 注销"; 11.}else{ 12. echo " 请登录"; 13.} 14.?>
login.php
1.<?php 2.session_start(); 3.echo ""; 4.?>
5.<?php 6.if(isset($_POST['userSubmit'])){ 7. if( 8. isset($_POST['userName']) && 9. isset($_POST['userPass']) && 10. $_POST['userName'] == "GGG" && 11. $_POST['userPass'] == "123456" 12. ){ 13. $_SESSION['userName'] = $_POST['userName']; 14. echo "登录成功, 返回首页"; 15. }else{ 16. echo "用户或密码错误, 请重新登录"; 17. } 18. 19.}else{ 20. $html=<<

在服务器端,生成一个与session值相对应的文件,文件为空

登录成功

再来看我们服务器端的sess文件,存入了登录验证信息

返回首页

注销

与之对应的在服务器端,sess文件被清空删除

session安全性实验
通样我们在另一个浏览器上打开,利用sess值登入测试

服务器端与之对应的sess值文件中存入信息

打开另外一个浏览器,生成新的sess值

替换前面的sess值

刷新:直接就进去了

当我们在第一个浏览器上注销之后
在另一一个浏览器上使用前面的sess值就会失效
因为服务器端与之对应的sess文件内容已被清空,整个sess值失效了
因此,我们日常生活中也应该要重视注销这一环节,随手注销首个好习惯!

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

想成为前端工程师滴小小白

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值