session 保存在服务器上的一个文件 文件当中保存着之前访问的信息
session 的查询基于sessionid号的
session 原理 :
当用户第一次访问服务器的时候 把登录信息存储到服务器上的一个session文件当中 并且产生一个sessioid号 并且会客户端浏览器产生一个cookie文件的请求 将该sessionid号存储到cookie当中 用户第三次访问服务器的时候 携带拥有sessionid号的cookie一起来访问 服务器根据cookie当中的sessionid号 找到对应文件的sessionid号 从而获取对应信息
session的操作:
添加session: 在使用session之前必须开启session_start session_start 之前不允许有任何的输出 添加直接向$_SESSION 数组当中添加即可 ; 当然在默认情况下 添加session以后会产生一个保存sessionid号的cookie 但是次cookie的有效期与当前会话 即关闭cookie会失效 如果想此cookie不失效 可以对该有效期的设置
session_name 获取cookie的名称
session_id 获取当前cookie的值
setcookie(session_name,session_id,time()+3600,"/");
删除session:
直接将$_SESSION 的数组情空
$_SESSION = array() ;
$_SESSION = NULL
修改session :
直接修改$_session 数组即可
查询session:
直接修改$_session 数组即可
如果浏览器将cookie禁用 session是否还能使用 ?
默认情况下 禁用cookie session将无法使用
解决办法 1 可以在页面与页面之间通过get传参 将session 继续向下传递
2 "?".session_name."=".session_id();
3 注意 传动参数不需要我们手动接收 session 会自动帮助我们接收 也是就是说cookie获取对应的cookie号cookie禁用掉以后 使用get来接收sessioid号
也可以使用SID 来进行传递get参数 并且SID他会判断当前浏览器是否禁用cookie 如果禁用cookie SID 值才有效值为session_name= session_id(); 如果cookie没有被禁用掉 SID 会为空
如果通过get传递的session没有生效 检查PHP ini文件中的选项session.use_cookies=1 将该值改为0 仅使用cookie来传递sessionid