会话跟踪是Web程序中常用的技术,用来跟踪用户的整个会话。常用的会话跟踪技术是cookie与session。
那么cookie与session之间有什么区别呢?
session可实现页面之间数据共享( 以文件方式存在)。
启动会话:session_start() 启动后,生成session_id,随机串(唯一),此随机串会返回,然后存在在客户端,也是已cookie存在,如果禁用的话,将不能使用。
存入会话:$_SESSION['key'] = $value
读取会话:$value = $_SESSION['key']
删除会话:
1.unset($_SESSION['key'])
2.$_SESSION = array() 置为空数组
结束会话:session_destory()
<?php
//启动会话
session_start();
//存入会话
$_SESSION['user'] = $user;
//读取会话
echo $_SESSION['user'];
//删除会话
// unset($_SESSION['user']);
$_SESSION = array();
//结束会话
session_destory();
?>
需要注意事的是:在执行一系列的操作之前一定要先启动会话。
我们用到会话的主要作用是用于身份识别。
session有生命周期,生命周期就是说在规定时间不访问该页面,其中的规定时间就为生命周期,服务器会把长时间没有活动的Session从服务器内存中清除,此时Session便失效。Session的默认失效时间为20分钟,可以在php.ini中设置。
cookie是储存在用户本地终端上的数据 ,指某些网站为了辨别用户身份、进行session跟踪而储存在用户本地终端上的数据(通常经过加密)。
cookie可保留用户登录的信息,因为它是通过客户端记录信息确定用户的身份的(前提是不关闭浏览器),虽然可以方便一些,但是不安全。
创建cookie:setcookie
<?php
setcookie('name',$name);
setcookie('user',$user,time()+100);
?>
其中第一个参数为分键,第二个参数为值,第三个参数为可选参数,表示过期时间,即生命周期,不写的话,当浏览器关闭时则消失。
读取cookie:$_COOKIE['key']
删除cookie:setcookie(key,value,time()-1)
不同的浏览器有不同的cookie,不可共享。
session和cookie的区别:
1.cookie通过在客户端(client)记录信息确定用户身份,而session是通过在服务器(server)端记录信息确定用户身份。
2.cookie不是很安全,别人可以分析存放在本地的COOKIE并进行COOKIE欺骗。
3.session会在一定时间内保存在服务器上,当访问增多,会比较占用你服务器的性能。
4.单个cookie保存的数据不能超过4K,很多浏览器都限制一个站点最多保存20个cookie,当超过时,会自动清除一部分cookie。
综上所述:
将登陆信息等重要信息存放到SESSION。
其他信息如果需要保留,可以放在COOKIE中。