美文网首页
PHP中的Cookie -- PHP 学习 (十五)

PHP中的Cookie -- PHP 学习 (十五)

作者: 无故下架内容so账号已弃用 | 来源:发表于2019-05-08 13:21 被阅读0次

    设置 Cookie

    • setcookie: 发送 Cookie

    setcookie ( string $name [, string $value = "" [, int $expire = 0 [, string $path = "" [, string $domain = "" [, bool $secure = false [, bool $httponly = false ]]]]]] ) : bool

    参数说明:

    1. $name: Cookie的名称

    2. $value: Cookie 值。 这个值储存于用户的电脑里,请勿储存敏感信息

    3. $expire: Cookie 的过期时间, 秒数, 如果设置成零,或者忽略参数, Cookie 会在会话结束时过期(也就是关掉浏览器时)

    4. $path: Cookie 有效的服务器路径, 设置成 '/' 时,Cookie 对整个域名 $domain 有效, 默认值是设置 Cookie 时的当前目录

    5. $domain: Cookie 的有效域名/子域名。 设置成子域名(例如 'www.example.com'),会使 Cookie 对这个子域名和它的三级域名有效(例如 w2.www.example.com)。 要让 Cookie 对整个域名有效(包括它的全部子域名),只要设置成域名就可以了(这个例子里是 'example.com'

    6. $secure: 设置这个 Cookie 是否仅仅通过安全的 HTTPS 连接传给客户端, 默认是 false

    7. $httponly: 设置成 TRUE,Cookie 仅可通过 HTTP 协议访问。 这意思就是 Cookie 无法通过类似 JavaScript 这样的脚本语言访问。

    <?php
    header('content-type: text/html;charset=utf-8');
    
    // 设置 名为 tel 的 cookie, 10秒钟后过期
    setcookie('tel','13510748888',time()+10);
    // 设置cookie: username, 一小时后过期
    setcookie('username','guoyou.国有',time()+3600);
    ?>
    
    
    setcookie 十秒后,tel过期

    没有设置时区, 所以时间显示和本地有差异

    注意:在发送 Cookie 时,值的部分会被自动 urlencode 编码。收到 Cookie 时,会自动解码,并赋值到可变的 Cookie 名称上。 如果不想被编码,可以使 setrawcookie() 代替

    • setrawcookie: 发送未经 URL 编码的 cookie

    setrawcookie() 和 setcookie() 非常相似,唯一不同之处是发送到浏览器的 cookie 值没有自动经过 URL 编码(urlencode)。

    <?php
    header('content-type: text/html;charset=utf-8');
    
    // 设置cookie: username, 一小时后过期
    setrawcookie('username','guoyou.国有',time()+3600);
    ?>
    
    没有自动经过 URL 编码

    获取 Cookie

    $_COOKIE— HTTP Cookies

    <?php
    header('content-type: text/html;charset=utf-8');
    
    // 设置 名为 tel 的 cookie, 1000秒钟后过期
    setcookie('tel','13510748888',time()+1000);
    // 设置cookie: username, 一小时后过期
    setcookie('username','guoyou.国有',time()+3600);
    
    // 获取 cookie
    $username = $_COOKIE['username'];
    
    echo $username; // => guoyou.国有
    
    // 获取所有 cookie
    
    $cookies = $_COOKIE;
    
    print_r($cookies);
    /*
    Array
    (
        [tel] => 13510748888
        [username] => guoyou.国有
    )
    */
    

    删除 Cookie

    通过设置 cookie 的过期时间来删除 cookie

    <?php
    header('content-type: text/html;charset=utf-8');
    
    // 删除cookie: username
    setcookie('username','guoyou.国有',time()-10);
    

    cookie的缺点

    (1)cookie 可能被禁用;
    (2)cookie 与浏览器相关,不能互相访问;
    (3)cookie 可能被用户删除;
    (4)cookie 安全性不够高;
    (5)cookie 存储空间很小(只有4–10KB左右)

    可以尝试使用 H5 中的 localStorage 来代替 cookie 的使用, 这里暂时不介绍

    相关文章

      网友评论

          本文标题:PHP中的Cookie -- PHP 学习 (十五)

          本文链接:https://www.haomeiwen.com/subject/ultyoqtx.html