PHP之Session与Cookie区别及phpsessid获取

发布时间:2023-08-23作者:小灵龙点击:68

存放位置


Cookie本身是在浏览器端存放的;   Session本身是在服务器端存放的。

安全性

一般不要用 Cookie 保存数据集或其他大量的数据。并非所有的浏览器都支持 Cookie,并且数据信息是以明文文本的形式保存在客户端计算机中,因此最好不要保存敏感的、未加密的数据,否则会影响网络的安全性。
cookie不是很安全,别人可以分析存放在本地的cookie并进行cookie欺骗,考虑到安全应当使用session

应用场景


使用 Cookie 能够达到多种目的,所有这些目的都是为了使 Web 站点记住您。例如,一个实施民意测验的站点可以简单地利用 Cookie 作为布尔值,表示您的浏览器是否已经参与了投票,从而避免您重复投票; 而那些要求用户登录的站点则可以通过 Cookie 来确定您是否已经登录过,这样您就不必每次都输入凭据。
Cookie 能够帮助 Web 站点保存有关访问者的信息
cookies适合做保存用户的个人设置、爱好等。记录访客的某些信息。如可以利用 Cookie 记录用户访问网页的次数,或者记录方可曾经输入过的信息。另外,某些网站可以使用 Cookie 自动记录访客上次登录的用户名。
Session适合做客户的身份验证。比如用户名密码、会员ID等等

过期设定

web应用程序可以在操作时,由服务器端代码生成一个Cookie信息保存在客户端的浏览器中,生成一个很小的文件,此时的文件存在RAM运行内存中,如果用户关闭浏览器就会自动删除Cookie信息;
如果程序生成一个带有时间设定的cookie,那么cookie文件将存在物理内存中,下次访问同一个web应用时,在设置时间范围内,web应用仍能获取到cookie信息。

session是放在服务器上的,过期与否取决于服务器的设定,

cookie是存在客户端的,过期与否可以在cookie生成的时候设置进去。

数量和大小限制

Cookie存储的数据在不同的浏览器会有不同的限制,一般在同一个域名下,Cookie变量数量控制在20个以内,每个cookie值的大小控制在4kb以内。
session值没有大小和数量限制,但如果数量过多,会增大服务器的压力。

内容区别

cookie保存的内容是字符串,而服务器中的session保存的数据是对象。

获取浏览器上的phpsessid

$config = Config::get('session');
      Session::init($config);
      $session_id = session_id();
dump($session_id)

GC的工作

默认情况下,session.gc_probability = 1,session.gc_divisor =100,也就是说有1%的可能性会启动GC。GC的工作,就是扫描所有的session信息,用当前时间减去session的最后修改时间(modified date),同session.gc_maxlifetime参数进行比较,如果生存时间已经超过gc_maxlifetime,就把该session删除。

标签: