前言
上篇提到的cookie有它的限制,因为他在数量和大小上受到限制,浏览器上储存不能超过300个,每个服务器不能超过20个,数据量不能超过4K,并且在安全性上,cookie基于储存在浏览器上,通过浏览器都可以直接访问或篡改,所以有安全上的限制,不能传递敏感或重要信息,所以我们可以使用session代替。
下面我们来看看session
- session -数据存储在服务器端
- 每一个会话分配一个单独的session_id;
-
该session_id通过cookie传送到前台,默认的session_id名称是PHPSESSID,这种方式可以在请求中不直接显示用户的存储信息
- 前台只能看到session的ID,而不能修改session的值
- 设置一个会员数组
- 使用session之前需要先开启会话session_start();然后给session命名
- session存储在session数组$_SESSION
- session存储比较安全,但是如果session数量过多,会导致服务器性能下降
使用session的步骤
Session_start() :开始一个会话或者返回已经存在的会话。
-
注册SESSION变量:
PHP5使用$_SESSION[‘xxx’]=xxx注册SESSION全局变量。和GET,POST,COOKIE的使用方法相似。session_start(); $_SESSION['user'] = "yxhh"; $_SESSION['age'] = 10;
如何删除session?
1、unset ($_SESSION['xxx'])删除单个session,unset($_SESSION['xxx']) 用来unregister一个已注册的session变量。其作用和session_unregister()相同。 session_unregister()在PHP5中不再使用,可将之打入冷宫。
unset($_SESSION) 此函数千万不可使用,它会将全局变量$_SESSION销毁,而且还没有可行的办法将其恢复。用户也不再可以注册$_SESSION变量。
2、$_SESSION=array()删除多个session
3、session_destroy()结束当前的会话,并清空会话中的所有资源。。该函数不会unset(释放)和当前session相关的全局变量(globalvariables),也不会删除客户端的session cookie.PHP默认的session是基于cookie的,如果要删除cookie的话,必须借助setcookie()函数。
返回值:布尔值。
功能说明:这个函数结束当前的session,此函数没有参数,且返回值均为true
session_unset() 如果使用了$_SESSION,则该函数不再起作用。由于PHP5必定要使用$_SESSION,所以此函数可以打入冷宫了。
如果你觉得我们的session还是不够安全,我们可以使用加密算法,使安全性得到提高
加密算法:md5
它可以将任意长度的字符串编程为一个32位定长的字符串,md5只能单向加密,无法通过加密后的字符串重新解密为原字符串
<?php
$password = "123456";
echo md5($password);
?>
因为加密算法的出现,逆向思维破解也产生了彩虹表这技术,记录了大量的md5结果,然后通过一定的算法找到一个md5结果相符的字符串。
加密算法sha1
可以将任意长度的字符串编程为一个40位定长的字符串
<?php
$password = "123456";
echo sha1($password);
?>
结果 7c4a8d09ca3762af61e59520943dc26494f8941b