会话技术:session、cookie
定义:会话跟踪是web程序中常用的技术,用来跟踪用户的整个会话,一个用户的所有请求操作都应属于同一个会话
常用的会话跟踪技术是Cookie与Session。
解决问题:用于解决身份识别问题
•Cookie通过在客户端记录信息确定用户身份,Session通过在服务器端记录信息确定用户身份。
session与cookie的区别
•1、cookie数据存放在客户的浏览器上,session数据放在服务器上。
•2、cookie不是很安全,别人可以分析存放在本地的COOKIE并进行COOKIE欺骗,考虑到安全应当使用session。
•3、session会在一定时间内保存在服务器上。当访问增多,会比较占用你服务器的性能。考虑到减轻服务器性能方面,应当使用COOKIE。
•4、单个cookie保存的数据不能超过4K,很多浏览器都限制一个站点最多保存20个cookie。
•5、所以个人建议:
• 将登陆信息等重要信息存放为SESSION
• 其他信息如果需要保留,可以放在COOKIE中
注:session判断用户身份用sessionid判断(sessionid是随机分配的,唯一串)
用sessionid为标识符来存取服务器端的session存储空间,sessionID会保存在客户端,而cookie中sessionID会在服务器端(cookie禁用,session禁用)
服务器可以通过URL重写的方式来传递sessionID的值,若客户端cookie禁用,则服务器可以自动通过重写URL方式保存sessionID的值
• web应用程序是使用http协议传输数据的。
HTTP协议是无状态协议,非持续性连接。
SESSION
--可实现页面之间数据共享
注:$_SESSION是系统预定义变量,是一个数组类型的变量,默认是一个空数组,一文件的形式写入
•启动会话
session_start()
•存入会话
$_SESSION['key'] = $value
•读取会话
$value = $_SESSION['key']
•删除会话
unset($_SESSION['key'])
$_SESSION = array()
•结束当前会话
session_destory()
COOKIE
•创建cookie
•bool setcookie ( string $name [, string $value [, int $expire = 0 [, string $path [, string $domain [, bool $secure = false [, bool $httponly = false ]]]]]] )
•读取cookie
•$_COOKIE[key]
•删除cookie
•setcookie(key,value,time()-1) //time是指过期时间,若不写time,浏览器关闭时cookie消失