闻心阁

一蓑烟雨看苍生,半壶浊酒笑红尘

PHP Session总结

2012-10-22 约 1 分钟读完 搬砖秘籍

Session可以理解为php存储在服务器断的cookie,但是对于cookie来说因为是存储在用户电脑上,所以并不能保证安全性。但是session不同,因为是存储在服务器端,用户并没有权限对Session进行读写,所以使用过程要比cookie安全

如果你使用了 Seesion,或者该 PHP 文件要调用 Session 变量,那么就必须在调用PHP会话Session之前启动它,使用 session_start() 函数。其它都不需要你设置了,PHP 自动完成 Session 文件的创建。例如:

<?php
// 启动 Session   
session_start();   
// 声明一个名为 admin 的变量,并赋空值。   
$_SESSION["admin"] = null; 
?>

将 $_SESSION 看成是存储在服务器端的数组即可,我们注册的每一个变量都是数组的键,跟使用数组没有什么分别。如果要退出系统,使用如下方法:

<?php
session_start();   
// 这种方法是将原来注册的某个变量销毁  
unset($_SESSION["admin"]);  

// 这种方法是销毁整个 Session 文件
session_destroy();
?>

Session与Cookie

并不是说Session足够强大,就能抛弃Cookies。 Session通过 Session ID 来判断客户端用户,什么是 Session ID,就是那个 Session 文件的文件名,Session ID 是随机生成的,因此能保证唯一性和随机性,确保 Session 的安全。一般如果没有设置 Session 的生存周期,则 Session ID 存储在内存中,关闭浏览器后该 ID 自动注销,重新请求该页面后,重新注册一个 Session ID。 如果客户端没有禁用 Cookie,则 Cookie 在启动PHP会话Session的时候扮演的是存储 Session ID 和 Session 生存期的角色。

其实Session 还提供了一个函数 session_set_cookie_params(); 来设置 Session 的生存期的,该函数必须在 session_start() 函数调用之前调用:

<?php
$lifeTime = 24 * 3600;   
session_set_cookie_params($lifeTime);   
session_start();   
$_SESSION["admin"] = true;  
?>

记录结束。