这篇文章给大家介绍的内容是关于PHP中如何将session存入数据库并使用(附代码),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。
实例说明:
将SESSION数据变量存储于服务器是端是一种较安全的做法,但是设想一下,像校内网这样的日访问量过亿,拥有用户几千万的大型网站,如果将所有用户SESSION数据全部存储于服务器端,将消耗巨大的服务器资源。所以程序员在制作大型网站时将SESSION存储于服务器端虽然安全,但却不是最好的选择。如果将SESSION数据存储于数据库中,那么就可以减轻服务器的压力同时数据也是比较安全的。相关专题推荐:php session (包含图文、视频、案例)
设计过程
首先在Mysql数据库创建存储SESSION的表:
表名为t_session
表结构为
说明:session_key:是用来存会话ID的session_data:是用来存经序列化后的$_SESSION[]里的值;
session_time:是用来存时间戳的,这个时间戳指的是当前session在创建时的 time()+session的有效期。需要注意的是这 里的session_time的类型是int,这样可以在操作数据库时,进行大小比较!
那么什么是序列化呢?
序列化 (Serialization)就是将对象的状态信息转换为可以存储或传输的形式的过程。在序列化期间,对象将其当前状态写入到临时或持久性存储区。以后,可以通过从存储区中读取或反序列化对象的状态,重新创建该对象。
比如说$_SESSION[“user”]=”张三”
$_SESSION[“pwd”]=”zhangsan”
序列话后成为一个字符串user|s:6:"张三";pwd|s:8:"zhangsan";
其中s表示类型为string,数字表示字符串长度,这样就可以对这个字符串操作了。
接下来就是正文部分了
session.save_handler定义存储和获取与会话关联的数据的处理器的名字。默认为files。如果设定为files(session.save_handler = files),则采用的是php内置机制,如果想自定义存储方式(比如存储到数据库中),则使用session_set_save_handler()进行自定义设置,我们这里说的则是第二种。
所以我们得修改php.ini文件里session_set_save_handler的值,将其修改为user,如图:
boolsession_set_save_handler(callable open,callable $close,callable read,callable write,callable destroy,callable gc[,callable $create_sid[,callable validate_sid[,callable update_timestamp]]] )
如果不修改