zoukankan      html  css  js  c++  java
  • Cookie

    Cookie

    由于Http协议是无状态协议,当同一个用户请求一个页面后,再请求同一个网站的另一个页面时,http协议并不能告诉服务器两个请求是来自同一个用户,不能将两次访问联系到一起。

    Cookie可以让Web服务器将一些网站登录用户的资料存放于客户端的电脑上。例如:当通过验证,成功登陆网站后,在同一个网站下第一个页面的PHP脚本,会把这个用户有关的信息设置到客户端电脑的Cookie中,当再次访问同一个网站中的其他脚本时,会自动携带Cookie中的数据一起访问,服务器中的每个脚本都可以接受Cookie中的数据,不需要每访问一个页面就重新输入一次登陆者的信息。

    Cookie的建立

    1. 向用户端电脑设置Cookie          setcookie();

    2. 在服务器端读取Cookie内容      $_COOKIE

    3. 将多维数组应用于Cookie中      setcookie(“member[name]”,’liangjie’);      setcookie(“member [email]”,’1853881164@qq.com’);

    4.删除Cookie                      setcookie(“member”,‘ ’,time()-3600);  //将时间设为超时

    实验1

    新建文件下,在其下面创建第一个.php文件,建立Cookie。代码如下:

    <?php
    header('Content-type:text/html;charset=utf-8');
    /*
    var_dump(setcookie('name','liangjie',time()+3600));
    echo '<br />';
    var_dump($_COOKIE);
    */
    //向客户端电脑设置Cookie,有效时间为当前时间+3600s
    var_dump(setcookie("member[name]",'liangjie',time()+3600));  //打印结果,若返回true则设置成功
    echo '<br />';
    var_dump(setcookie("member[email]",'185@163.com',time()+3600));//打印结果,若返回ture则设置成功
    ?>

    在同文件夹下面创建第二个.php文件,验证Cookie。代码如下:

    <?php
    header('Content-type:text/html;charset=utf-8');
        var_dump($_COOKIE);
    ?>
    

    在同文件夹下面创建第三个.php文件,删除Cookie。代码如下:

    <?php
    //遍历删除
    foreach($_COOKIE['member'] as $key => $val){
        var_dump(setcookie("member[{$key}]",'',time()-3600));
    }
    

    注:实验前最好清空一下浏览器浏览记录

    实验2

    此实验说明同一个用户使用不同的浏览器访问同一个网站时,设置的Cookie值不同

    新建文件下,在其下面创建第一个.php文件,建立Cookie。代码如下:

    <?php
    header('Content-type:text/html;charset=utf-8');
    //随机产生一个ID,并在此ID前随机产生一个数作为前缀(避免ID重复)交给Cookie
    $id = uniqid(rand(1000,9999).'_');
    var_dump(setcookie('id',$id,time()+3600));    //打印结果,返回值为ture,设置成功
    ?>
    

    新建文件下,在其下面创建第二个.php文件,验证Cookie。代码如下:

    <?php
    header('Content-type:text/html;charset=utf-8');
        var_dump($_COOKIE);
    ?>
    

    新建文件下,在其下面创建第三个.php文件,删除Cookie。代码如下:

    <?php
    //遍历删除
    foreach($_COOKIE['member'] as $key => $val){
        var_dump(setcookie("member[{$key}]",'',time()-3600));
    }
  • 相关阅读:
    朗志轻量级项目管理解决方案-RBAC角色权限模块介绍
    关于业务规则层、业务实体层、业务外观层、模型层的作用很不清楚,殷切期望解答
    已有类实例,现在想拥有另一个相同状态的实例,除了反序列化还有别的办法吗?
    签名工具
    请教一个winform程序设计上的问题
    在使用WeifenLuo Suite时遇到的问题,自己记录一下,备忘
    解读C#正则表达式
    [导入]jbuilder 2006开发struts+sqlserver2K准备工作
    如何用设计模式变相实现类的多继承?
    WriteXmlSchema(xsdFileName)和GetXmlSchema()输出的内容的差异
  • 原文地址:https://www.cnblogs.com/lian9/p/12266587.html
Copyright © 2011-2022 走看看