当前位置:首页 > PHP > 正文内容

全方位认识PHP的SESSION

高老师7年前 (2019-03-25)PHP1381

【一】.介绍session

由于HTTP是无状态的请求,创建一个会话需要保持必须需要身份标识。当用户第一次访问,PHP会为用户创建一个唯一的sessionid,并将sessionid通过cookie发送给浏览器,并在服务器的临时文件创建一个以sessionid为名的文件用来保存这个sessionid保存的信息。

举例:

(1).访问我的网站http://www.gaojiufeng.cn,访问后发现本地的cookie有一个PHPSESSID=au63vsj6p5k35itclmbdufne66 ,服务器的cookies文件生成了一个sess_au63vsj6p5k35itclmbdufne66的文件

(2).当我再次访问我的网站,浏览器会自动携带cookie PHPSESSID=au63vsj6p5k35itclmbdufne66 来请求我的网站。

通过上面的例子,我们知道客户端的cookie中保存的sessionid和服务器的sessionid文件相关联,这样用户就能和系统交互,我们也知道用户的身份。这就是为什么PHP网站只需要拿到PHPSESSID=au63vsj6p5k35itclmbdufne66就能模拟登陆的原因了。

【二】.session只能保存字符串吗?

直接看代码:

$_SESSION['username'] = ['admin'];
$_SESSION['password'] = 'admin';

看来session是可以保存数组的,为什么呢?因为session文件保存的都是基于php序列化的内容,比如下面的cookies文件内容

username|a:1:{i:0;s:5:"admin";}password|s:5:"admin";

【三】.session只能保存在文件中吗?

session不仅仅只能保存到文件中,还能保存到redis或者mysql中,如果只能保存到文件中,那么负载均衡部署怎么办?

redis在php.ini的配置,也可以通过ini_set的php代码方式配置,一定要保证安装了redis扩展

session.save_handler = redis
session.save_path = "tcp://127.0.0.1:6379"   
//session.save_path = "tcp://127.0.0.1:6379?auth=123456"  有密码的写法

扫描二维码推送至手机访问。

版权声明:本文由高久峰个人博客发布,如需转载请注明出处。

本文链接:https://blog.20230611.cn/post/79.html

分享给朋友:

“全方位认识PHP的SESSION” 的相关文章

PHP验证码不显示的终极解决方案

PHP验证码不显示的终极解决方案

PHP验证码不显示的问题应该是经常的事情,我在这里把2种解决方案都发出来方便大家后期使用.因为是昨天晚上自己写验证码都没有显示,我就直接把之前和李炎恢老师上课写的验证码拿来还是不显示,醉了。首先是第一种方法:1、打开服务器安装目录下的php.ini文件;2、去掉;extension=php_gd.d...

编写php com组件,php调用.net dll,php源码保护

编写php com组件,php调用.net dll,php源码保护

开发com组件可以用c++,vc++,net,我比较熟悉net,演示用dnet(1).创建项目:启动vs2017,新建项目,选择Visual C# ->Windows桌面->类库通用windows(2). 修改Com项目:点击 项目->项目属性,再点击应用程序->程序集信息,...

php上传大文件,php大文件上传

php上传大文件,php大文件上传

(1).前端文件:<form action="upload.php" method="post" enctype="multipart/form-data">    &...

php多进程实现任务管理器,定时执行任务,支持守护

php多进程实现任务管理器,定时执行任务,支持守护

主要原理是通过PHP创建多个子进程,在子进程中发送进程闹钟信号,然后再监听闹钟信号中继续发送闹钟信号。同时通过父进程设置非阻塞运行。代码如下:<?php /**  * 订单任务  */ class Order {    &n...

php  while  true  cpu占用100%

php while true cpu占用100%

在编写多进程的实例中我在每个进程中使用如下代码://调用等待信号的处理器 while (true) {     pcntl_signal_dispatch(); }开启5个进程,cpu直接100%修正之后的代码://调用等待信号的处理器 while&...

php执行慢原因查找

php执行慢原因查找

今天帮朋友查询wordpress执行超级慢的原因,特此记录开启fpm的慢日志,记录执行超过30秒的脚本request_slowlog_timeout = 30 slowlog = var/log/slow.log查看日志[23-May-2019 17...