在php.ini中存在以下几个配置项:
session.save_path="" --设置session的存储路径 session.save_handler="" --设定用户自定义存储函数,如果想使用PHP内置会话存储机制之外的可以使用本函数(数据库等方式) session.auto_start boolen --指定会话模块是否在请求开始时启动一个会话,默认为0不启动 session.serialize_handler string --定义用来序列化/反序列化引擎名字。默认使用php
例如:
session.save_path="D:\xampp\tmp" 表明所有的session文件都是存储在xampp/tmp下 session.save_handler=files 表明session是以文件的方式来进行存储的 session.auto_start=0 表明默认不启动session session.serialize_handler=php 表明session的默认序列化引擎使用的是php序列化引擎
不同的引擎所对应的session的存储方式不相同。php存储session的三种模式(序列化/反序列化引擎):
php_serialize (php≥5.5.4) | 经过serialize()函数序列化数组 |
php | 键名➕竖线➕经过serialize()序列化的值 |
php_biary | 键名长度对应的ascii字符➕键名➕serialize()序列化的值 |
在PHP中默认使用的是PHP引擎,如果要修改为其他的引擎,只需要添加代码ini_set('session.serialize_handler', '需要设置的引擎');
。
举栗说明:
<?php ini_set("session.serialize_handler","php"); session_start(); $_SESSION['shaw'] = $_GET['shaw']; ?>
运行该代码后,可看到请求头存在Cookie=a7d4f0vgjr1l1hr6aud13noae6

关于session的存储机制:
php中的session中的内容并不是放在内存中的,而是以文件的方式来存储的,存储方式就是由配置项
session.save_handler
来进行确定的,默认是以文件的方式存储。存储的文件是以
sess_sessionid
来进行命名的,文件的内容就是session值的序列话之后的内容。
在本地找到sess_a7d4f0vgjr1l1hr6aud13noae6
,查看内容:

简单记就是有竖线就是php类型。康康另一种模式(php_serialize
):
<?php ini_set("session.serialize_handler","php_serialize"); session_start(); $_SESSION['shaw'] = $_GET['shaw']; ?>

最后,看一下第三种(php_biary
):
<?php ini_set("session.serialize_handler","php_binary"); session_start(); $_SESSION['shaw'] = $_GET['shaw']; ?>
显示的是: