session 技术相当于Cookie技术的升级版,Cookie的工作机制是将信息记录在客户端,而Session技术是将信息存放在服务器端,服务器存储信息的方式有很多,可以是文件、数据库和内存等,这里以文件的存储方式介绍session的工作步骤。
(1)客户端第一次访问某服务器。
(2)服务器通过Cookie发送sessionID给客户端,并在服务器建立一个与sessionID同名的文件用于存储信息,而sessionID不能重复,即不同的客户端的sessionID是不同的。
(3)客户端再次访问服务器时会携带服务器发送给客户端的sessionID。
(4)服务器根据客户端发送的sessionID查找对应的文件,读取文件内容。
通过上面的步骤可以看出,session的工作依赖cookie的工作,当然不用Cookie也可以实现sessionID的传递,如URL,但是用cookie最方便。
PHP本身的session是如何工作的呢?首先,在需要共享客户端信息的文件中通过session_start()函数开启session,然后就可以向$_SESSION全局数组中存入或读取数据,而$_SESSION 数组与其他数组不同的是,当向该数组中添加数据时,PHP还会将其中的数据系列化写入session文件中,每次开启session时,PHP会将session文件中的数据读取到该全局数组中,实现数据共享的功能。