PHP session相关知识详解

今天继续给大家介绍渗透测试相关知识,本文主要内容是PHP session相关知识详解。

免责声明:
本文所介绍的内容仅做学习交流使用,严禁利用文中技术进行非法行为,否则造成一切严重后果自负!
再次强调:严禁对未授权设备进行渗透测试!

一、session简介

cookie详解一文中,我们详细介绍了Web服务器的会话机制和cookie。今天,我们就来介绍一下session的相关知识。
与cookie相比,session最大的区别在于session是存储在服务器中的。在PHP中,session并不是存储在服务器的内存中,而是以文件的方式来存储的。在PHP的配置文件中,有专门的session模块,用于配置session相关的设置,在该模块下有个session.save_path参数,如下所示:
在这里插入图片描述
这个参数设置了PHP的session存储位置,我们打开该参数指定的目录,果然发现了session文件,如下所示:
在这里插入图片描述
我们打开后,发现session中的内容是反序列化后的内容,如下所示:
在这里插入图片描述
在实际的网站中,可能会存储很多用户的session信息,为了区分这些不同的session究竟属于哪个用户,需要用户以cookie的方式上传一个唯一的会话标识,这样PHP就可以根据用户上传的会话标识来查找用户所对应的session了。

二、关于session的PHP配置

除了session.save_path外,PHP中还有很多关于session的配置,常用参数及作用如下所示:
1、session.name
指定用户cookie的会话名,默认值为PHPSESSID。PHP就是根据这个名称来查找用户对应的session。
2、session.save_handler
定义了处理器名称,默认为files。
3、session.auto_start
如果该参数设置为1,则标识会话模块在请求开始时自动启动一个会话。该参数值默认为0,表示不启用该功能。
4、session.use_cookies
该参数指定了在客户端是否使用cookie来存储会话ID(即session.name),该参数默认为1,表示启用该功能。
5、session.cookie_secure
PHP4.0.4版本以后添加此功能,默认为Off。如果该项设置为On,则表示启用安全链接发送cookie。
6、session.serialize_handler
session的存储和使用需要进行序列化和反序列化操作,该参数定义了PHP用来序列化/返序列化的处理器名字。PHP8.2版本支持三种,分别是PHP序列化格式(php_serialize)、PHP内部格式(php php_binary)以及WDDX(wddx)。该项参数的设置决定了session文件中内容的存储格式,默认值是php。
7、session.upload_progress.eabled

8、session.upload_progress.cleanup

三、关于session的PHP函数

接下来,介绍几个PHP中常用的session函数:
1、开启session会话
session_start()函数可以开启session会话。
2、设置、获取session值
$_SESSION[‘var’]可以用于获取session中存储的var变量的值,我们可以使用“=”,表示对session中该变量进行赋值。
3、删除session值
unset($_SESSION[‘var’])可以删除session中存储的var变量。
4、清空session值
如果我们想要删除整个session,那么我们可以使用如下函数:

$_SESSION=[];

session_unset();

5、销毁整个session
如果我们想更直接,销毁整个session,那么可以使用命令:

session_destroy()

销毁session和清空session的区别类似于销毁是删除session文件,而清空session是把session文件中的所有内容清空。
6、返回/更新session对话名称
session_name()函数可以返回当前会话名称,如果使用在使用该函数时添加name参数,使之成为session_name(name),则会将当前会话名更新为变量name对应的名称。

四、PHP session示例

在学习了上述PHP配置及相关函数外,我们就尝试利用上述函数,编写一个简单的session示例,代码如下所示:

<?php
//开启session会话
session_start();
//以GET的方式获取一个变量
$sess=$_GET['sess'];
//将GET获取的变量值存放进入session中
$_SESSION['var_session']=$sess;
//打印之前存储的session
echo $_SESSION['var_session'];
echo "<br>";
//打印session_name
echo session_name();
?>

上述页面访问后结果如下所示:
在这里插入图片描述
执行后,可以在session存储目录中查找到session文件,文件如下所示:
在这里插入图片描述
原创不易,转载请说明出处:https://blog.csdn.net/weixin_40228200

  • 4
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

永远是少年啊

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

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

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

打赏作者

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

抵扣说明:

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

余额充值