会话控制 cookie 和 session 的区别和联系作用

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号的方式来解决这一问题 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值