cookie作用:
Cookie是由HTTP服务器设置的,保存在浏览器中,但HTTP协议是一种无状态协议,在数据交换完毕后,服务器端和客户端的链接就会关闭,每次交换数据都需要建立新的链接(就像我们去超市买东西,没有积分卡的情况下,我们买完东西之后,超市没有我们的任何消费信息,但我们办了积分卡之后,超市就有了我们的消费信息。cookie就像是积分卡,可以保存积分,商品就是我们的信息,超市的系统就像服务器后台,http协议就是交易的过程);
cookie技术不易存储私密性较高的信息 ;
如何设置cookie:
添加cookie: setcookie($name,$value,$expire,$path,$domain);
$name:cookie 名称
$value :该cookie的值
$expire:该cookie的过期时间 过期后 该cookie文件会被自动删除 如果未指定过期时间默认浏览器关闭时 cookie失效
$path :有效路径 该cookie只在该路径下有效(可以访问) 如果没有指定默认为当前文件路径
$domain:有效域名 该cookie只在该域名下有效(可以访问) 如果没有指定是当前域名
注意 : setcookie前不允许有任何输出
添加cookie :
重新setcookie($name,$value,$expire,$path,$domain) 切记不要使用$_cookie直接修改
删除cookie :
让cookie文件过期即可
setcookie('username','$username',time()-3600,"/"); 过期后路径名可以不写
查询cookie
使用超全局数组$_COOKIE[cookie的名称];
SESSION作用:
记住: php写原生必需在代码顶部 开启session_start 框架一般不用
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
区别 :
1 cookie是保存在客户端浏览器的
2 session是保存在服务器当中
3 cookie设置值得时候 不能对数组直接进行设置 $_COOKIE 进行赋值 必须使用setcookie对cookie进行设置 而session直接使用 $_SESSION 赋值即可 但是前提必须先开启session_start();
4 删除cookie是需要使用setcookie对cookie进行过期处理 而session直接将$session 清空即可
5 cookie修改时 必须使用setcookie进行修改 而session修改时只需要对数组$_SESSION进行赋值修改即可
6 cookie访问直接访问 数组$_cookie setssion访问直接访问 $_SESSION数组即可
联系 :
session是将sessionid号保存在 cookie当中的 如果cookie禁用 默认情况下 session也将无法使用 但是可以根据get传递 sessionid号的方式来解决这一问题