默认情况下,PHP会把全部的会话数据保存在服务器的文本文件中。这些文件通常是系统的临时目录(比如UNIX或Mac OSX是/tmp目录),其文件名通常以sess_拼接上一个会话ID。PHP还提供一种机制可以让我们以其他的方式来管理会话,比如将会话存储到redis或memcached中进行管理。当然也可以在Mysql数据库中存储这些会话数据。将会话数据存储到数据库中的好处有以下几点:
1.能够提高系统的安全性。在共享主机服务器上,如果没有进行特别的设置,所有的站点都将会使用一个临时目录,会话存储文件名又有一定的规律性,我们很容易就可以编写脚本从目录中读取文件的内容,这样一来就可以从其他站点访问到存储的用户数据了。
2.把会话数据保存到数据库中还可以更方便的搜索Web站点会话的更多信息,我们通过这些会话信息,可以做很多有意义的事情,比如统计网站在某个时间点在线用户的数量。
3.通常一个用户比较多的站点运行在多个服务器上,站点会话通常分布式存储,这种情况下使用文件存储方式就不行了。
在共享主机上,涉及安全问题的另外一个技巧是改变会话的目录。安全起见,我们可以在开启会话之前(session_start())调用session_save_path()设置会话的存储目录(前提是该目录具备适当的权限)。在某些操作系统上,建议使用高效处理大量小文件的系统路径来保存会话数据,例如在Linux平台上,对于会话数据保存工作而言,reiserfs文件系统会比ext2fs文件系统提供更好的性能。
下面的步骤可以实现将会话