php cookie工作原理与实例详解


Posted in PHP onJuly 18, 2016

在php 中cookie是我们常用到的,但是可能很多朋友都不知道cookie是怎么工作的,下面小编来给大家整理一下关于php cookie

工作原理与一些对于cookie读写操作实例。

Cookie和会话状态

做BS开发,这两个概念必不可少,先来个大概了解,没有实际应用很难深入,深入看参考地址!
什么是 Cookie?

Cookie 是一小段文本信息,伴随着用户请求和页面在 Web 服务器和浏览器之间传递。用户每次访问站点时,Web 应用程序都可以读取 Cookie 包含的信息。 Cookie 的基本工作原理如果用户再次访问站点上的页面,当该用户输入 URLwww.*****.com时,浏览器就会在本地硬盘上查找与该 URL 相关联的 Cookie。如果该 Cookie 存在,浏览器就将它与页面请求一起发送到您的站点。

Cookie 有哪些用途?

最根本的用途是:Cookie 能够帮助 Web 站点保存有关访问者的信息。更概括地说,Cookie 是一种保持Web 应用程序连续性(即执行“状态管理”)的方法.使 Web 站点记住您.

•当客户访问某个基于PHP技术的网站时,在PHP中可以使用setcookie()函数生成一个cookie,系统经处理把这个cookie发送到客户端并保存在C:Documents andSettings用户名Cookies目录下。

•cookie是HTTP标头的一部分,因此setcookie()函数必须在HTML本身的任何内容送到浏览器之前调用。这种限制与header()函数一样(如需了解head()函数,请自行查阅)。

•当客户再次访问该网站时,浏览器会自动把C:DocumentsandSettings用户名Cookies目录下与该站点对应的cookie发送到服务器,服务器则把从客户端传来的cookie将自动地转化成一个PHP变量。在PHP5中,客户端发来的cookie将被转换成全局变量。你可以通过$_COOKIE[‘xxx']读取。

定义一个cookie

•设置cookie:

•语法:boolsetcookie(stringname,[stringvalue,[int expire,[stringpath,[stringdomain,[int secure]]]]]);

本cookie函数可以有6个属性,常用的有3个参数。

1.实例:

 代码如下

$value="the best way is by yourself";
setcookie("cookiename",$value,time()+60*60*24*7);

1.接收和处理cookie

PHP对cookie有很好的支持,和form表单一样,接收的时候PHP会自动从web服务器接收HTTP头并且它。接收的时候和表单接收一样,用$_COOKIE[“cookiename”]或者$HTTP_COOKIE_VARS[“cookiename”](不提倡使用)

1.注意:

如果网站有几个不同的文件目录,使用不带路径的cookie,那么只能在设置cookie的文件所在路径下访问到此cookie。如果指定路径,则按照设置时的路径作为访问cookie的指定路径。

创建cookie数组:

1.其一:

 代码如下

setcookie("CookieArray[0]","Value1");
setcookie("CookieArray[1]","Value2");

1.其二:

代码如下

setcookie("CookieArray['one']","Value1");
setcookie("CookieArray['two']","Value2");

1.setcookie()中使用数组

 代码如下

<?php
setcookie("cookie[three]","cookiethree");
setcookie("cookie[two]","cookietwo");
setcookie("cookie[one]","cookieone");
//刷新页面后,显示出来
if(isset($_COOKIE['cookie'])){
foreach($_COOKIE['cookie']as$name=>$value){
echo"$name:$value<br/>n";
}
}
?>

删除cookie

1.要删除一个已经存在的cookie,有两个办法:

1、调用只带有name参数的setcookie,那么名为这个name的cookie将被从客户机上删掉;
setcookie(“MyCookie”);//删除MyCookie 

2、期时间就行,那么这个Cookie在这个页面的浏览完之后就被删除了(其实是失效了)。

例如:

 代码如下

setcookie(“MyCookie”,”Value”,time()-1);

//删除MyCookie。

要注意:当一个Cookie被删除时,它的值在当前页仍然有效。如果要把cookie设置成在浏览器关闭后就失效。那么可以直接把expiretime设为0,或者不设置此值。

例如:setcookie(“name”,”value”,0)。

cookie注意事项

•1、setcookie()之前不能有任何html输出,就是空格,空白行都不行,必须在html文件的内容输出前设置

•2、setcookie()后,你在当前页调用echo$_COOKIE[“name”]不会有输出。必须刷新或到下一个页面才可以看到cookie值。

•3、不用浏览器对cookie处理不同。客户端可以禁用cookie,浏览器也会限制cookie的数量。一个浏览器能创建的cookie数量最多为300个,并且每个不能超过4KB,每个WEB站点能设置的cookie总数不能超过20个。

•4、cookie是保存在客户端的,用户禁用了cookie,你的cookie自然也就没作用啦!因此,避免过度依赖cookie,要先想好如果cookie被禁用时的解决方案,以备万一。

以上就是对 PHP cookie 资料的整理,有需要的朋友可以参考下。

PHP 相关文章推荐
Session保存到数据库的php类分享
Oct 24 PHP
比较discuz和ecshop的截取字符串函数php版
Sep 03 PHP
php正则取img标记中任意属性(正则替换去掉或改变图片img标记中的任意属性)
Aug 13 PHP
destoon实现会员商铺中指定会员或会员组投放广告的方法
Aug 21 PHP
php合并数组中相同元素的方法
Nov 13 PHP
33道php常见面试题及答案
Jul 06 PHP
PHP生成随机密码方法汇总
Aug 27 PHP
Yii2 输出xml格式数据的方法
May 03 PHP
PHP在innodb引擎下快速代建全文搜索功能简明教程【基于xunsearch】
Oct 14 PHP
php版阿里云OSS图片上传类详解
Dec 01 PHP
PHP中overload与override的区别
Feb 13 PHP
PHP设计模式(三)建造者模式Builder实例详解【创建型】
May 02 PHP
Yii2针对指定url的生成及图片等的引入方法小结
Jul 18 #PHP
图文详解PHP环境搭建教程
Jul 16 #PHP
Yii调试查看执行SQL语句的方法
Jul 15 #PHP
PHP中FTP相关函数小结
Jul 15 #PHP
Yii数据模型中rules类验证器用法分析
Jul 15 #PHP
Yii控制器中filter过滤器用法分析
Jul 15 #PHP
Yii编程开发常见调用技巧集锦
Jul 15 #PHP
You might like
浅析PKI加密解密 OpenSSL
2013/07/01 PHP
PHP中类型转换 ,常量,系统常量,魔术常量的详解
2017/10/26 PHP
使用PHP+Redis实现延迟任务,实现自动取消订单功能
2019/11/21 PHP
JavaScript网页制作特殊效果用随机数
2007/05/22 Javascript
jQuery(1.3.2) 7行代码搞定跟随屏幕滚动的层
2009/05/21 Javascript
js验证是否为数字的总结
2013/04/14 Javascript
jQuery中wrapInner()方法用法实例
2015/01/16 Javascript
vue.js入门教程之基础语法小结
2016/09/01 Javascript
javascript实现的左右无缝滚动效果
2016/09/19 Javascript
深入理解JS继承和原型链的问题
2016/12/17 Javascript
js判断iframe中元素是否存在的实现代码
2016/12/24 Javascript
原生javascript实现读写CSS样式的方法详解
2017/02/20 Javascript
解决vue build打包之后首页白屏的问题
2018/03/06 Javascript
小程序实现发表评论功能
2018/07/06 Javascript
JavaScript事件循环及宏任务微任务原理解析
2020/09/02 Javascript
[54:28]EG vs OG 2019国际邀请赛小组赛 BO2 第一场 8.16
2019/08/18 DOTA
python实现感知器
2017/12/19 Python
使用python爬虫获取黄金价格的核心代码
2018/06/13 Python
python利用requests库进行接口测试的方法详解
2018/07/06 Python
详解PyCharm配置Anaconda的艰难心路历程
2018/08/13 Python
解决python中用matplotlib画多幅图时出现图形部分重叠的问题
2019/07/07 Python
Python实现随机生成任意数量车牌号
2020/01/21 Python
python中线程和进程有何区别
2020/06/17 Python
Pycharm2020.1安装无法启动问题即设置中文插件的方法
2020/08/07 Python
Python使用urlretrieve实现直接远程下载图片的示例代码
2020/08/17 Python
css3+jq创作含苞待放的荷花
2014/02/20 HTML / CSS
墨西哥皇宫度假村预订:Palace Resorts
2018/06/16 全球购物
澳大利亚设计的优质鞋类和适合澳大利亚生活方式的服装:Rivers
2019/04/23 全球购物
平面设计求职信
2014/03/10 职场文书
乡镇创先争优活动总结
2014/08/28 职场文书
小学运动会报道稿
2015/07/22 职场文书
旅行社计调工作总结
2015/08/12 职场文书
财产分割协议书
2016/03/22 职场文书
数据库的高级查询六:表连接查询:外连接(左外连接,右外连接,UNION关键字,连接中ON与WHERE的不同)
2021/04/05 MySQL
Python 实现绘制子图及子图刻度的变换等问题
2021/05/31 Python
一条 SQL 语句执行过程
2022/03/17 MySQL