内容来源(公众号:PHP版WEB项目)1什么是Session
HTTP是无状态协议,也就是说HTTP的工作过程是请求与回应的简单过程,所以HTTP没有一个内置的方法来存储这个过程中各方的状态。比如,当同一个用户向服务器发出两个不同的请求时,虽然服务器端都会给以相应的回应,但是它并没有办法知道这两个动作是由同一个用户发出的。
会话(Session)管理应运而生。通过使用一个会话,程序可以跟踪用户的身份和行为,并且根据这些状态数据给用户以相应的回应。
2 Session的基本功能
在PHP中,每一个Session都有一个ID。这个SessionID是一个由PHP随机生成的加密数字。这个SessionID通过Cookie存储在客户端浏览器中,或者直接通过URL传递到客户端,如果在某个URL后面看到一长串加密的数字,这很有可能就是SessionID了。
SessionID就像一把钥匙,用来注册到Session变量中,而这些Session变量是存储在服务器端的。SessionID是客户端唯一存在的会话数据。
使用SessionID打开服务器端相对应的Session变量,跟用户相关的会话数据便一目了然。默认情况下,在服务器端的Session变量数据是以文件的形式加以存储的,但是会话变量数据也经常通过数据库进行保存。
3 Cookie与Session
在浏览器中,有些用户出于安全性的考虑,关闭了其浏览器的Cookie功能。Cookie将不能正常工作。
使用Session可以不需要手动设置Cookie,PHP Session可以自动处理。可以使用会话管理及PHP中的session_get_cookie_params()函数来访问Cookie的内容。这个函数将返回一个数组,包括Cookie的生存周期、路径、域名、secure等。它的格式为:
session_get_cookie_params(生存周期、路径、域名、secure)
4 在Cookie或URL中存储SessionID
PHP默认情况下会使用Cookie来存储SessionID。如果客户端浏览器不能正常工作,就需要用URL方式传递SessionID。如果将php.ini中的session.use_trans_sid设置为启用的状态,就可以自动通过URL来传递SessionID。
不过通过URL传递SessionID会产生一些安全问题。如果这个连接被其他用户复制并使用,有可能造成用户判断错误。其他用户可能使用SessionID访问目标用户的数据。
或者可以通过程序把SessionID存储到常量SID中,然后通过一个连接传递。
欢迎关注微信公众号“PHP基础入门教程”,谢谢支持!
网友评论