Session的工作方式
2008-05-01 04:18
134 查看
下面我们来看一下Session是如何工作的。不知你是否知道通过Cookie来实现身份认证的吧。首先生成一个独一无二的Cookie作为用户身份的标志,并在数据库中进行注册。然后通过用户传递来的Cookie和数据库中注册的Cookie进行对照以确定用户的身份。
Session的工作原理也是这样。
首先,PHP为建立Session的用户产生一个独一无二的字符串,用来标志这个用户的Session。一般将这个字符串称作Session Id。然后“sess”+Session Id为文件名(例如一个Session ID为111,那么文件名为sess_111)在服务器的文件系统中建立一个文件,在文件中保存用户在Session所定义的全局变量的变量名和值。然后再将Session Id作为一个名为PHPSession的Cookie保存在用户端的文件系统中。
然后,当用户再次连接服务器访问一个PHP脚本时,PHP从用户发来的PEESession这个Cookie中得到用户所在Session的Session Id,并根据Session Id从服务器的文件系统中保存Session信息的文件。最后从这个文件中读出用户在上次连接时所设置的全局变量的值。
因此,我们可以看到Session的工作原理和我们上一节所介绍的身份认证的工作原理是一样的。所不同的只是Session将信息保存在了服务器的文件系统中,而我们将信息保存在了数据库中。当然使用Session好处就是数据的保存和获取是由PHP自动完成的,而直接使用Cookie的话就需要自己动手进行数据的保存和获取。
Session利用Cookie的身份标志功能,将用户在浏览网站时需要保存的信息保存在服务器上。这样Session既克服了HTTP协议的缺陷,又防止了信息的泄漏,而且方便了编程者的使用,是一个非常好的解决方案。不过,Session的功能只有PHP4支持,PHP3是不支持Session的。因此使用PHP3进行网站构建的读者只能采用直接使用Cookie的方式。
相关文章推荐
- 简单易懂,Session的工作方式(
- Session的工作方式
- 很经典的一个session工作方式举例
- Session的工作方式
- session and cookie
- ABAP 新建session会话的函数
- 会话cookie,session
- 使用Redis存储Nginx+Tomcat负载均衡集群的Session
- OutputCache, Substitution and HTTP Session Problem
- Session变量不能传送到下一页.解决: session.use_trans_sid = 1
- PHP利用session实现上传进度条的方法
- ASP.NET存储Session的StateServer
- 删除文件目录导致ASP.NET Session丢失的解决方案
- [转载]Asp.net默认配置下,Session莫名丢失的原因及解决
- session转移(使用Filter方式实现用Memcached储存Session)
- Hibernate 中session.evict(obj):possible nonthreadsafe access to session
- dwr session error 问题解决
- linux+nginx+tomcat负载均衡,实现session同步
- sessionFactory.openSession()和sessionFactory.getCurrentSession的区别