专业3 Cookie 和Session的使用及原理
2024-10-20 01:10:48
Cookie的使用及原理 什么是cookie cookie是一种用来跟踪和识别用户上网信息的会话控制技术,它将跟踪后的信息存储在客户端的浏览器上 cookie如何使用 第一步:设置cookie即可(告诉浏览器,有cookie要存储值了) setcookie('cookie的键名','cookie的值')
第二步:取出cookie的值,cookie的值可以使用PHP的超全局预定义数组$_COOKIE直接取即可 echo $_COOKIE['cookie的键名']
如果想要删除cookie 第一种:清除浏览器的缓存就能删除cookie了 第二种:代码删除 //给cookie重新设置过期时间,时间为过去时
setcookie("username","",time()-1);
cookie的分类 cookie分为会话cookie和持久cookie 会话cookie指:未给cookie设置过期时间,当浏览器关闭cookie的值就会消失 //会话cookie,未设置过期时间,当关闭浏览器,值就删除了
setcookie("username","root");
持久cookie值:给cookie设置过期时间,只有当过期时间到cookie的值才会消失 setcookie("username","root",time()+20);
session
Session的使用及原理 什么是session session也是一种和cookie一样的会话控制技术,它将跟踪后的信息以文件的形式存储在服务器端,所以说session相对于cookie而言更加安全 session如何使用 第一步:设置session,设置之前一定要使用session_start()开启session //开启session,在开启之前不允许有任何输出
session_start();
//设置session
$_SESSION['username']="admin";
第二步:取出session <h1>欢迎,
<font color="red">
<?php
//只要用的$_SESSION的地方,必须要先开启
session_start();
//输出键为username的值即可
echo $_SESSION['username']
?>
</font>登录
</h1>
删除session session_start();
//删除指定下标的session数据,同时session文件中的数据也会被删除掉
//unset($_SESSION['name']);
//清空session数组,同时将session文件销毁
session_destroy();
session的存储位置 session将跟踪和识别后的记录以文件的形式保存在服务器端,那么文件的保存位置由PHP的配置文件中的:session.save_path来决定 文件的存储名是一个32位的sessionID,如何得知哪个文件是你的存储的session数据呢,可以打印cookie数组来查看: print_r($_COOKIE);
//得到
Array(
'name' => 'admin',
'PHPSESSID' => 'gmf800he5068ns1apmkg865i26'
)
其中PHPSESSID指向的就是一个32位的随机数,简称sessionID
session的运行原理 当页面遇到session_start()时,服务器端会准备产生一个32位的sessionID,在产生前会先查看本地的cookie中是否存在,如果cookie中已有sessionID,那么session认为会话未结束,不再产生新的sessionID,接下来的操作依旧和上一个sessionID存储的文件进行关联。 如果本地的cookie中不存在sessionID则说明会话是一个新会话,此时服务器端会将产生的新sessionID发送一份寄存在本地的cookie,同时会创建一个以sessionID命名的文件来进行对会话内容存储。
如何让session不过期 通过原理我们发现,session是关闭浏览器后就消失的一种保存方式。 session的存储内容和sessionID
有关,如果能让sessionID持久保存,则服务器端不会在每次重新打开浏览器后遇到session_start()时生成新的sessionid了。
实现: //开启session
session_start();
//设置session
$_SESSION['name']="admin"; //让sessionid不过期
//session_name():获取sessionID的名称
//session_id():获取sessionID的值
//第三个参数就是给其增加上过期时间
setcookie(session_name(),session_id(),time()+60*24);
最新文章
- 微软开源全新的文档生成工具DocFX
- 【转载】用Ionic开发hybrid APP
- canvas 利用canvas中的globalCompositeOperation 绘制刮奖 效果
- 黑马程序员——JAVA基础之包,权限
- 【BZOJ】【1041】【HAOI2008】圆周上的点
- HDU 3265 Posters(线段树)
- JQuery easyui (2)Droppable(放置)组件
- ASPCMS 多条件查询
- OpenSuSE zypper OpenStack Icehouse repoAdd
- ActionBarSherlock的使用--------(一)配置
- 【程序员小助手】Emacs,最强编辑器,没有之一
- restrict
- centos安装docker容器
- SQL Server元数据损坏(metadata corruption)修复
- C# 在异步线程操作类的变量
- Entity Framework Core系列之DbContext
- WiFidog 广告路由可修改功能更加智能化的几点看法
- MAVEN最佳实践:模块划分
- centos安装Python插件后找不到对应的插件ModuleNotFoundError: No module named*
- Android逆向-Android基础逆向7(内购干货集合)