• cookie和session

    一、 为什么需要会话技术

    HTTP协议是无状态、无记忆的。多次请求之间,无任何的联系,即同一用户请求同一网站的不同页面,服务器无法识别是否是同一用户发起的请求。用户无法进行连续的业务逻辑。


    1、设置cookie基本语法:setcookie('数据名','数据值')。

    2、读取cookie数据:$_COOKIE[cookie数据名]。

    3、删除cookie:setcookie(数据名,'')。

    一 (1)、 COOKIE运行原理 

    COOKIE数据是在执行setcookie函数后,服务器脚本通过HTTP协议的set-cookie议项,通知浏览器在其COOKIE数据区保存的数据。

    浏览器后续对本站的页面发起请求时,自动携带对应的COOKIE数据。服务器脚本接收到数据后,就可以区分不同的用户。

    一(2)、 COOKIE数据的属性(重点)

     有效期(生命周期)--重点

    1) 默认生命周期

    COOKIE数据的默认的生命周期是会话周期,即在浏览器窗口关闭之前,一直存在。关闭后立即消失。关闭浏览器:相当于结束会话,COOKIE数据自动消失。再次打开浏览器,相同页面读取数据,无法读到。

    好处:减少空间占用,减少HTTP传输的数据量,提高数据安全。

    默认使用窗口周期的COOKIE数据  在关闭后无COOKIE

    2) 设置有效期

           setcookie(名称,内容,有效期time() +有效的秒数); 设置COOKIE的第三个参数,为设置其有效期

    二、session的增删改查

    session_start();   //开启。

    注意:session_start()之前不能有任何输出内容,本身也需要通过HTTP协议响应头实现

    $_SESSION[名] =值;  //设置

    $_SESSION[名]       // 读取

    $_SESSION[名] =新值;//修改

    unset($_SESSION[名]); //删除



    sessionCOOKIE之间的区别与联系 

    1) 区别

    从存储位置

    COOKIE存储在浏览器,SESSION存储在服务器。

    数据安全性

    SESSION更高(存储安全性要求比较高的数据)

    传输的数据量(每次请求与响应时):

    COOKIE数据在浏览器请求本站时都会携带,数据越多,携带数据量越大。(消耗带宽) 

    支持的数据类型

    COOKIE仅支持字符串类型SESSION支持除资源型外的所有类型。session文件中记录每个数据的类型)。

     

    1) 联系

    都是用来解决HTTP协议的无状态、无记忆的不足之处,以实现业务的连续性,如登录及购物车模块的实现。

    二者都是会话技术的范畴

    SESSION需要依赖COOKIE(浏览器的身份信息)进行数据的传递。禁用COOKIE后,session无法正常使用。

    SESSION需要依赖COOKIE存储 对应session会话名,传递会话名。

    (可以通过参数形式将sessionid传递到指定位置,确保各个页面操作的是同一session文件)

    session_id():读取以及设置session会话名称。可以在各个页面之间传递SESSION会话名。