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);

最新文章

  1. 微软开源全新的文档生成工具DocFX
  2. 【转载】用Ionic开发hybrid APP
  3. canvas 利用canvas中的globalCompositeOperation 绘制刮奖 效果
  4. 黑马程序员——JAVA基础之包,权限
  5. 【BZOJ】【1041】【HAOI2008】圆周上的点
  6. HDU 3265 Posters(线段树)
  7. JQuery easyui (2)Droppable(放置)组件
  8. ASPCMS 多条件查询
  9. OpenSuSE zypper OpenStack Icehouse repoAdd
  10. ActionBarSherlock的使用--------(一)配置
  11. 【程序员小助手】Emacs,最强编辑器,没有之一
  12. restrict
  13. centos安装docker容器
  14. SQL Server元数据损坏(metadata corruption)修复
  15. C# 在异步线程操作类的变量
  16. Entity Framework Core系列之DbContext
  17. WiFidog 广告路由可修改功能更加智能化的几点看法
  18. MAVEN最佳实践:模块划分
  19. centos安装Python插件后找不到对应的插件ModuleNotFoundError: No module named*
  20. Android逆向-Android基础逆向7(内购干货集合)

热门文章

  1. 创建spring boot项目并添加多个模块时,启动报 错误: 找不到或无法加载主类
  2. curl 查看接口的网络分段响应时间
  3. Socket和数据库的一些使用---郭雪彬
  4. JabRef
  5. mysql表查询、多表查询(增强查询的使用)子查询、合并查询,外连接,mysql5种约束,自增长
  6. Solution -「Gym 102759C」Economic One-way Roads
  7. Solution -「HDU 5498」Tree
  8. Solution -「CF 1342E」Placing Rooks
  9. CentOS7搭建yum源仓库(阿里源)
  10. 原来VIM还可以这样玩