目录
六:php cookie 精选技术文章
七:php cookie 相关视频教程
首页 头条 php cookie(专题)

php cookie(专题)

Aug 05, 2020 pm 06:02 PM
cookie

本专题通过图文、视频的形式全面介绍了php cookie的由来,php cookie属性有哪些,php cookie函数用法以及php cookie实际应用实例,通俗易懂!欢迎php中文网的同学们学习!

php cookie(专题)

一:什么是 Cookie ?

cookie 常用于识别用户。

cookie 是一种服务器留在用户计算机上的小文件。

每当同一台计算机通过浏览器请求页面时,这台计算机将会发送 cookie。

通过 PHP,您能够创建并取回 cookie 的值。

相关专题推荐:php session 

二:Cookie 的诞生

由于HTTP协议是无状态的,而服务器端的业务必须是要有状态的。

Cookie诞生的最初目的是为了存储web中的状态信息,以方便服务器端使用。

比如判断用户是否是第一次访问网站。目前最新的规范是RFC 6265,它是一个由浏览器服务器共同协作实现的规范。

三:Cookie 的原理

Snipaste_2020-07-30_11-06-03.png

第一次访问网站的时候,浏览器发出请求,服务器响应请求后,会将cookie放入到响应请求中,在浏览器第二次发请求的时候,会把cookie带过去,服务端会辨别用户身份,当然服务器也可以修改cookie内容。

四:Cookie 属性

Cookie是一段不超过4KB的小型文本数据,由一个名称(Name)、一个值(Value)和其它几个用于控制Cookie有效期、安全性、使用范围的可选属性组成。

Snipaste_2020-07-30_11-13-06.png

Name 表示 Cookie 的名称。
Value

表示 Cookie 的值。

Domain

指定了可以访问该 Cookie 的 Web 站点或域。

Cookie 机制并未遵循严格的同源策略,允许一个子域可以设置或获取其父域的 Cookie。

Path

定义了Web站点上可以访问该Cookie的目录。

Expires

什么是有效期,就是图中的Expires属性,一般浏览器的cookie都是默认储存的,当关闭浏览器结束这个会话的时候,这个cookie也就会被删除。

Secure

指定是否使用HTTPS安全协议发送Cookie。

使用HTTPS安全协议,可以保护Cookie在浏览器和Web服务器间的传输过程中不被窃取和篡改。该方法也可用于Web站点的身份鉴别,即在HTTPS的连接建立阶段,浏览器会检查Web网站的SSL证书的有效性。

HttpOnly 用于防止客户端脚本通过document.cookie属性访问Cookie,有助于保护Cookie不被跨站脚本攻击窃取或篡改。

五:PHP Cookie 函数

1、setcookie — 发送 Cookie

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

setcookie() 定义了 Cookie,会和剩下的 HTTP 头一起发送给客户端。

和其他 HTTP 头一样,必须在脚本产生任意输出之前发送 Cookie(由于协议的限制)。

请在产生任何输出之前(包括 和 或者空格)调用本函数。

一旦设置 Cookie 后,下次打开页面时可以使用 $_COOKIE 读取。

Cookie 值同样也存在于 $_REQUEST。

参数

参数描述
nameCookie 名称。
value

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

expire

Cookie 的过期时间。

这是个 Unix 时间戳,即 Unix 纪元以来的秒数。

也就是说,基本可以用 time() 函数的结果加上希望过期的秒数。

path

Cookie 有效的服务器路径。

设置成 '/' 时,Cookie 对整个域名 domain 有效。

如果设置成 '/foo/', Cookie 仅仅对 domain 中 /foo/ 目录及其子目录有效。

默认值是设置 Cookie 时的当前目录。

domain

Cookie 的有效域名/子域名。

设置成子域名,会使 Cookie 对这个子域名和它的三级域名有效。

要让 Cookie 对整个域名有效,只要设置成域名就可以了。

secure

设置这个 Cookie 是否仅仅通过安全的 HTTPS 连接传给客户端。

设置成 TRUE 时,只有安全连接存在时才会设置 Cookie。

如果是在服务器端处理这个需求,程序员需要仅仅在安全连接上发送此类 Cookie 。

httponly

设置成 TRUE,Cookie 仅可通过 HTTP 协议访问。

这意思就是 Cookie 无法通过类似 JavaScript 这样的脚本语言访问。

要有效减少 XSS 攻击时的身份窃取行为,可建议用此设置,不过这个说法经常有争议。

返回值

如果在调用本函数以前就产生了输出,setcookie() 会调用失败并返回 FALSE。

如果 setcookie() 成功运行,返回 TRUE。

示例

<?php
$value = &#39;something from somewhere&#39;;

setcookie("TestCookie", $value);
setcookie("TestCookie", $value, time()+3600);  /* 1 小时过期  */
setcookie("TestCookie", $value, time()+3600, "/~rasmus/", "example.com", 1);
?>
登录后复制

2、setrawcookie — 发送未经 URL 编码的 cookie

setrawcookie ( string $name [, string $value [, int $expire = 0 [, string $path [, string $domain [, bool $secure = false [, bool $httponly = false ]]]]]] ) : bool
登录后复制

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

六:PHP Cookie 简单示例

1、基本操作

<?php

//添加Cookie
setcookie(&#39;username&#39;, &#39;phpcn&#39;, time() + 3600);

//获取Cookie
$username = $_COOKIE[&#39;username&#39;];

//删除Cookie
setcookie(&#39;username&#39;, &#39;&#39;, time() - 3600);

//修改Cookie
setcookie(&#39;username&#39;, &#39;phpcn-updated&#39;, time() + 3600);

?>
登录后复制

2、面向过程封装

<?php

/**
 * 获取 Cookie
 * @param  string $name Cookie 名称
 * @return mixed       Cookie 值
 */
function cookie_get($name)
{
	return isset($_COOKIE[$name]) ? $_COOKIE[$name] : null;
}

/**
 * 删除 Cookie
 * @param  string $name Cookie 名称
 */
function cookie_del($name)
{
	setcookie($name, &#39;&#39;, time() - 3600);
}

/**
 * 设置Cookie
 * @param  string  $name   Cookie 名称
 * @param  mixed  $value  Cookie 值
 * @param  integer $expire Cookie 过期时间
 * @param  string  $path   Cookie 有效路径
 * @param  string  $domian Cookie 有效域名/子域名
 */
function cookie_set($name, $value, $expire = 3600, $path = &#39;/&#39;, $domian = &#39;&#39;)
{
	setcookie($name, $value, time() + $expire);
}

/**
 * 检测 Cookie
 * @param  string  $name      Cookie 名称
 * @param  boolean $has_empty 检测为空
 * @return boolean             
 */
function cookie_has($name)
{
	return isset($_COOKIE[$name]);
}

?>
登录后复制

3、面向对象封装

<?php


class Cookie
{
    const OPTION_EXPIRE = &#39;expire&#39;;
    const OPTION_PATH = &#39;path&#39;;
    const OPTION_DOMAIN = &#39;domain&#39;;
    const OPTION_SECURE = &#39;secure&#39;;
    const OPTION_HTTPONLY = &#39;httponly&#39;;

    /**
     * Cookie 实例
     * @var null
     */
    private static $instance = null;

    /**
     * Cookie 选项
     * @var array
     */
    private $options = [
        self::OPTION_EXPIRE => 3600,
        self::OPTION_PATH => &#39;/&#39;,
        self::OPTION_DOMAIN => &#39;domain&#39;,
        self::OPTION_SECURE => false,
        self::OPTION_HTTPONLY => false
    ];

    /**
     * Cookie constructor.
     * @param $options
     */
    private function __construct($options)
    {
        $this->setOptions($options);
    }

    /**
     *  privated __clone
     */
    private function __clone()
    {

    }

    /**
     * 获取实例
     * @param $options
     * @return Cookie|null
     */
    public static function getInstance($options)
    {
        if (is_null(self::$instance)) {
            self::$instance = new self($options);
        }

        return self::$instance;
    }

    /**
     * 设置选项
     * @param $name
     * @param $value
     */
    public function setOption($name, $value)
    {
        if (isset($this->options[$name])) {
            $this->options[$name] = $value;
        }

        throw new InvalidArgumentException(&#39;Cookie option not exists:{$name}&#39;);
    }

    /**
     * 设置多个选项
     * @param $options
     */
    public function setOptions($options)
    {
        foreach ($options as $name => $value) {
            $this->setOption($name, $value);
        }
    }

    /**
     * 设置 Cookie
     * @param $name
     * @param $value
     * @param array $options
     */
    public function set($name, $value, $options = [])
    {
        $this->setOptions($options);

        if (is_array($value) || is_object($value)) {
            $value = json_encode($value);
        }

        setcookie(
            $name,
            $value,
            $this->options[self::OPTION_EXPIRE],
            $this->options[self::OPTION_PATH],
            $this->options[self::OPTION_DOMAIN],
            $this->options[self::OPTION_SECURE],
            $this->options[self::OPTION_HTTPONLY]
        );
    }

    /**
     * 获取 Cookie
     * @param $name
     * @return array|mixed
     */
    public function get($name)
    {
        $value = $_COOKIE[$name];

        if (is_array($value)) {
            $arr=[];
            foreach ($value as $k => $v) {
                $arr[$k] = substr($v, 0,1) == &#39;{&#39; ? json_decode($value) : $v;
            }
            return $arr;
        } else {
            return substr($value, 0,1) == &#39;{&#39; ? json_decode($value) : $value;
        }
    }

    /**
     * 删除 Cookie
     * @param $name
     * @param array $options
     */
    public function del($name, $options = [])
    {
        $this->setOptions($options);

        $value = $_COOKIE[$name];

        if ($value) {
            if (is_array($value)) {
                foreach ($value as $k => $v) {
                    setcookie(
                        $name . &#39;[&#39; . $k . &#39;]&#39;,
                        &#39;&#39;,
                        time() - 3600,
                        $this->options[self::OPTION_EXPIRE],
                        $this->options[self::OPTION_PATH],
                        $this->options[self::OPTION_DOMAIN],
                        $this->options[self::OPTION_SECURE],
                        $this->options[self::OPTION_HTTPONLY]
                    );
                    unset($v);
                }
            }else{
                setcookie(
                    $name,
                    &#39;&#39;,
                    time() - 3600,
                    $this->options[self::OPTION_EXPIRE],
                    $this->options[self::OPTION_PATH],
                    $this->options[self::OPTION_DOMAIN],
                    $this->options[self::OPTION_SECURE],
                    $this->options[self::OPTION_HTTPONLY]
                );
                unset($value);
            }
        }
    }
}
登录后复制

4、记住登录账号示例

<?php

function cookie_get_username()
{
    return isset($_COOKIE[&#39;username&#39;]) ? $_COOKIE[&#39;username&#39;] : null;
}

function cookie_get_password()
{
    return isset($_COOKIE[&#39;username&#39;]) ? $_COOKIE[&#39;username&#39;] : null;
}

function cookie_get_remember()
{
    return isset($_COOKIE[&#39;remember&#39;]) ? &#39;checked&#39; : null;
}


if ($_SERVER[&#39;REQUEST_METHOD&#39;] === &#39;POST&#39;) {

    $username = $_POST[&#39;username&#39;];
    $password = $_POST[&#39;password&#39;];

    if (isset($_POST[&#39;remember&#39;]) && $_POST[&#39;remember&#39;] === &#39;1&#39;) {
        setcookie(&#39;username&#39;, $username, time() + 3600);
        setcookie(&#39;password&#39;, $password, time() + 3600);
        setcookie(&#39;remember&#39;, &#39;1&#39;, time() + 3600);
    } else {
        setcookie(&#39;username&#39;, &#39;&#39;, time() - 3600);
        setcookie(&#39;password&#39;, &#39;&#39;, time() - 3600);
        setcookie(&#39;remember&#39;, &#39;&#39;, time() - 3600);
    }

    die(&#39;登录成功!&#39;);
}

?>

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

<form action="" method="post">
    <table width="300" border="1" align="center" cellpadding="5" cellspacing="5">
        <thead>
        <tr>
            <td colspan="2" align="center"><b>登录</b></td>
        </tr>
        </thead>
        <tr align="center">
            <td>用 户 名</td>
            <td><input type="text" name="username" value="<?=cookie_get_username()?>"></td>
        </tr>
        <tr align="center">
            <td>密码</td>
            <td><input type="password" name="password" value="<?=cookie_get_password()?>"></td>
        </tr>
        <tr align="center">
            <td>记住账号</td>
            <td>
                <input type="checkbox" name="remember" value="1" <?=cookie_get_remember()?>>
            </td>
        </tr>
        <tr align="center">
            <td colspan="2"><input type="submit" name="Submit" value="提交" /></td>
        </tr>
    </table>
</form>
登录后复制

1 .PHP7中创建COOKIE和销毁COOKIE的方法

2. 如何设置cookie和删除cookie

3. PHP 中 Session 和 Cookie 区别?

4. PHP 怎么带着 Cookie 跳转?

5. 注意!Laravel删除Cookie的小坑

6. PHP会话控制:cookie和session区别与用法深入理解

7. PHP之你不得不知道的COOKIE含义及使用方式

8. 怎样关闭阻止第三方cookie

9. JS读取PHP中设置的中文cookie时出现乱码怎么办

10. ThinkPHP6.0:Session和Cookie机制的变化

1. PHP中cookie怎么记录及删除变量?(图文+视频)

2. PHP cookie实现记录用户登陆信息的方法(图文+视频)

3. PHP cookie实现判断用户是否登录的方法(图文+视频)

4. PHP基于Cookie的购物车模块设计

5. 预定义变量(二):$_COOKIE浏览器上的小甜点

本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

Video Face Swap

Video Face Swap

使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热工具

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

如何修复 Google Chrome 上的 Roblox 403 禁止错误 如何修复 Google Chrome 上的 Roblox 403 禁止错误 May 19, 2023 pm 01:49 PM

许多Windows用户最近在尝试访问GoogleChrome浏览器中的网站URL时遇到了一个不寻常的错误,称为Roblox403禁止错误。即使在多次重新启动Chrome应用程序后,他们也无能为力。此错误可能有几个潜在原因,我们在下面概述并列出了其中一些。Chrome的浏览历史和其他缓存以及损坏的数据不稳定的互联网连接网站网址不正确从第三方来源安装的扩展在考虑了上述所有方面之后,我们提出了一些修复程序,可以帮助用户解决此问题。如果您遇到同样的问题,请查看本文中的解决方案。修复1

cookie是存在哪里 cookie是存在哪里 Dec 20, 2023 pm 03:07 PM

Cookie通常存储在浏览器的Cookie文件夹中的,浏览器中的Cookie文件通常以二进制或SQLite格式存储,如果直接打开Cookie文件,可能会看到一些乱码或无法读取的内容,因此最好使用浏览器提供的Cookie管理界面来查看和管理Cookie。

电脑上的cookie在哪里 电脑上的cookie在哪里 Dec 22, 2023 pm 03:46 PM

电脑上的Cookie存储在浏览器的特定位置,具体位置取决于使用的浏览器和操作系统:1、Google Chrome, 存储在C:\Users\YourUsername\AppData\Local\Google\Chrome\User Data\Default\Cookies中等等。

手机cookie在哪里 手机cookie在哪里 Dec 22, 2023 pm 03:40 PM

手机上的Cookie存储在移动设备的浏览器应用程序中:1、在iOS设备上,Cookie存储在Safari浏览器的Settings -> Safari -> Advanced -> Website Data中;2、在Android设备上,Cookie 存储在Chrome浏览器的Settings -> Site settings -> Cookies中等等。

cookie工作原理是什么 cookie工作原理是什么 Sep 20, 2023 pm 05:57 PM

cookie工作原理涉及到服务器发送Cookie、浏览器存储Cookie以及浏览器对Cookie的处理和存储。详细介绍:1、服务器发送Cookie,服务器会向浏览器发送一个包含Cookie的HTTP响应头。这个Cookie包含了一些信息,如用户的身份认证、偏好设置或购物车内容等,浏览器接收到这个Cookie后,会将它存储在用户的计算机上;2、浏览器存储Cookie等等。

清除cookie有什么影响吗 清除cookie有什么影响吗 Sep 20, 2023 pm 06:01 PM

清除cookie产生的影响有重置个性化设置和偏好、影响广告体验、破坏登录状态和记住密码功能。详细介绍:1、重置个性化设置和偏好,如果清除了cookie,购物车将被重置为空,需要重新添加商品,同样清除cookie还会导致在社交媒体平台上的登录状态丢失,需要重新输入用户名和密码;2、影响广告体验,如果清除了cookie,网站将无法了解我们的兴趣和偏好,会展示无关的广告等等。

浏览器cookie的存储位置详解 浏览器cookie的存储位置详解 Jan 19, 2024 am 09:15 AM

随着互联网的普及,我们使用浏览器进行上网已经成为一种生活方式。在日常使用浏览器过程中,我们经常会遇到需要输入账号密码的情况,如网购、社交、邮件等。这些信息需要浏览器记录下来,以便于下次访问时不需要再次输入,这时候Cookie就派上了用场。什么是Cookie?Cookie是指由服务器端发送到用户浏览器上并存储在本地的一种小型数据文件,它包含了一些网站的用户行为

cookie泄漏有什么危害 cookie泄漏有什么危害 Sep 20, 2023 pm 05:53 PM

cookie泄漏的危害有导致个人身份信息被盗窃、个人在线行为被追踪、账户被盗等。详细介绍:1、个人身份信息被盗窃,例如姓名、电子邮件地址、电话号码等,这些信息可能被不法分子用于进行身份盗窃、欺诈等违法活动;2、个人在线行为被追踪,通过分析cookie中的数据,不法分子可以了解用户的浏览历史、购物偏好、兴趣爱好等;3、账户被盗,绕过登录验证,直接访问用户的账号等等。