Session机制的原理和使用

来源:互联网 发布:淘宝双十一红包套现 编辑:程序博客网 时间:2024/05/22 05:08

1.1  session的定义

Session服务端的会话机制,简单理解就是服务端给客户端的一个编号。是指一个终端用户与交互系统进行通信的时间间隔,通常指从登录进入系统到注销退出系统之间所经过的时间。Session不能跨服务器,以文本文件形式存储在服务器端。一般文件形式:

sess_9ii4e9v1np8nh32uuguo8rkkk6

sess_r6q2ls11ajh1me05p07451egb5

 

  1.2  session的工作原理 

   a.当session被第一次使用时,一个唯一的标识就会被保存在cookie中,生成唯一的一个SESSION  ID 在程序中输出$_COOKIE时可发现$_COOKIE [PHPSESSID]

   b. PHP中使用session_start函数,从session仓库中加载存储的session变量。注意:session_start()前面不能有输出。

   c. 执行PHP脚本时,通过session_register()函数注册session变量。(赋值)

   d. PHP脚本执行结束时,未被注销的session变量会被保存在指定的session库中,session库路径可以通过

     session_save_path函数进行修改。

  

1.3 session的使用

       Session储存用户会话过程中的状态信息,通常被用来保存用户的登录信息,由于session是保存在服务器端的会话,PHP自动修改session文件的读写权限,只有系统的读和写权限,并且不能通过FTP修改,session值没有长度限制,相对安全。 

      

  1.3.1 session的有效时间

Session是全局变量,只要页面有提交活动,session会话就会被保持,如果页面在session有效时间内无活动,则会整体失效。一般情况下,关闭浏览器,session会话自动失效。

 

       在PHP中,Session的有效时间可以通过多种方法进行设置:


//session过期时间设置
@ini_set('session.cookie_lifetime', 3600);
@ini_set('session.gc_maxlifetime', 3600);  

 

 //session过期时间设置

Setcookie(session_name(),session_id(),time()+$lifeTime,”/”,’域’)         

     

    1.3.2  Session的路径设置问题

     Session的默认保存路径是在临时文件夹里,对于虚拟主机来说,除了维护困难,也存在一定的安全性问题,一般情况下建议将session路径指向web方式不能访问的具有读写权限的文件夹里。设置session存放目录设置方法:


  //session缓存路径
@session_save_path(PATH_DATA.'/session');


     session文件并不会自动删除,会一直保存在文件夹中,时间长了,占据大量空间,因此开发者最好进行定期删除,或者编写程序指令定期删除过期的session文件。

 

     1.3.2 session的注销

 

       注销所有session

session_unset();  

  session_destroy();

 

    注销单个session变量

unset($_SESSION[''user_name]);  


1.4  session的缺点

           Session保存在服务端虽然相对安全,但是比较消耗服务器内存,当用户登录量越来越多,每个用户都会生成一个唯一的session对象,每个session对象的持续时间是用户访问时间+不活动时间。例如用户访问web应用程序1个小时,session有效时间是1小时,则一个session对象的持续时间是2个小时。如果session中保存了很多对象,这些用户又同时访问web应用程序,那么用于session的持久性的服务器内存就会很大,从而影响可伸缩性。因此在大数据访问量情况下,服务器性能就要相对的提高。

 

   1.5 sessionPHP使用解说 

 

   在需要判断登陆的页面添加session判断:

if($_SESSION['aid']){........... 

 

0 0
原创粉丝点击