您好,欢迎访问一九零五行业门户网

php cookie(专题)

本专题通过图文、视频的形式全面介绍了php cookie的由来,php cookie属性有哪些,php cookie函数用法以及php cookie实际应用实例,通俗易懂!欢迎的同学们学习!
一:什么是 cookie ?
cookie 常用于识别用户。
cookie 是一种服务器留在用户计算机上的小文件。
每当同一台计算机通过浏览器请求页面时,这台计算机将会发送 cookie。
通过 php,您能够创建并取回 cookie 的值。
相关专题推荐:php session
二:cookie 的诞生
由于http协议是无状态的,而服务器端的业务必须是要有状态的。
cookie诞生的最初目的是为了存储web中的状态信息,以方便服务器端使用。
比如判断用户是否是第一次访问网站。目前最新的规范是rfc 6265,它是一个由浏览器服务器共同协作实现的规范。
三:cookie 的原理
第一次访问网站的时候,浏览器发出请求,服务器响应请求后,会将cookie放入到响应请求中,在浏览器第二次发请求的时候,会把cookie带过去,服务端会辨别用户身份,当然服务器也可以修改cookie内容。
四:cookie 属性
cookie是一段不超过4kb的小型文本数据,由一个名称(name)、一个值(value)和其它几个用于控制cookie有效期、安全性、使用范围的可选属性组成。
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(由于协议的限制)。
请在产生任何输出之前(包括 <html> 和 <head> 或者空格)调用本函数。
一旦设置 cookie 后,下次打开页面时可以使用 $_cookie 读取。
cookie 值同样也存在于 $_request。
参数
参数 描述
name cookie 名称。
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 = 'something from somewhere';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//添加cookiesetcookie('username', 'phpcn', time() + 3600);//获取cookie$username = $_cookie['username'];//删除cookiesetcookie('username', '', time() - 3600);//修改cookiesetcookie('username', 'phpcn-updated', 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, '', 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 = '/', $domian = ''){ 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、面向对象封装
<?phpclass cookie{ const option_expire = 'expire'; const option_path = 'path'; const option_domain = 'domain'; const option_secure = 'secure'; const option_httponly = 'httponly'; /** * cookie 实例 * @var null */ private static $instance = null; /** * cookie 选项 * @var array */ private $options = [ self::option_expire => 3600, self::option_path => '/', self::option_domain => 'domain', 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('cookie option not exists:{$name}'); } /** * 设置多个选项 * @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) == '{' ? json_decode($value) : $v; } return $arr; } else { return substr($value, 0,1) == '{' ? 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 . '[' . $k . ']', '', 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, '', 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、记住登录账号示例
<?phpfunction cookie_get_username(){ return isset($_cookie['username']) ? $_cookie['username'] : null;}function cookie_get_password(){ return isset($_cookie['username']) ? $_cookie['username'] : null;}function cookie_get_remember(){ return isset($_cookie['remember']) ? 'checked' : null;}if ($_server['request_method'] === 'post') { $username = $_post['username']; $password = $_post['password']; if (isset($_post['remember']) && $_post['remember'] === '1') { setcookie('username', $username, time() + 3600); setcookie('password', $password, time() + 3600); setcookie('remember', '1', time() + 3600); } else { setcookie('username', '', time() - 3600); setcookie('password', '', time() - 3600); setcookie('remember', '', time() - 3600); } die('登录成功!');}?><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>
六:php cookie 精选技术文章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机制的变化
七:php cookie 相关视频教程1. php中cookie怎么记录及删除变量?(图文+视频)
2. php cookie实现记录用户登陆信息的方法(图文+视频)
3. php cookie实现判断用户是否登录的方法(图文+视频)
4. php基于cookie的购物车模块设计
5. 预定义变量(二):$_cookie浏览器上的小甜点
其它类似信息

推荐信息