PHP Cookie相关


Cookie ?

百度百科:Cookie
维基百科:Cookie
我的个人理解:

  1. cookie 是存储在客户端(一般是浏览器)的一段小文本
  2. cookie 由服务端发送給客户端,发送方式:http头
  3. 如果客户端中存储着站点的cookie,每次访问此站点都会带上cookie

举个例子
你是酱油铺的老板,每天都会有十几个戴着面具和穿这衣服的人来打酱油(假设面具与衣服一模一样,你辨认不出来),但酱油铺每天的存货有限,每人每天只能打一瓶酱油。现在有个不坏好意的人想一天打多瓶酱油,让酱油铺缺货,从而导致后面的客人无法买到酱油,你为了遏止这种恶意行为,在每位已经购买了酱油的客人做了一个标记,以这种方法来辨别客人是否已经购买酱油,保证了购买的公平性。
当然,上面的例子是我随意构造出来的,比喻并不是很准确。
在上面的例子中,酱油铺老板就是服务端,客人就是客户端,那个标志就是cookie。

为什么需要cookie?
“需求-供应” 关系永远都不会变,有需求就有供应,cookie技术的出现也不例外。
web世界中,传输WWW文件(html,javascript,css,image.......)使用的是HTTP协议,而HTTP协议是无状态协议,也就是说,就算你客户端与服务端刚刚传输了文件,你再次发送请求,服务端也不会记得“你丫的是谁”。那要是我开发的网站一定要服务端“辨别”出客户端呢?那就开个新技术咯

这很OK

所以cookie就被搞出来了。就像酱油店的老板的做法一样。下次客户端访问服务端的时候就会带上服务端给的cookie,服务端通过cookie就可以辨认客户端了。


相关函数

  • setcookie() -- 设置Cookie
// 函数原型
setcookie($cookieName [,$cookieValue="" [,$expire=0 [,$path="" [,$domain="" [,$secure=false [,$httponly=false]]]]]])


相关数组

  • $_COOKIE[ ] -- 保存cookie相关信息


设置一个简单的cookie

<?php
$returnValue = setcookie('cookie_1'); // cookie名称为cookie_1 值不设置
var_dump($returnValue); // 打印setcookie()返回值
?>
//运行结果
D:\WampServer\www\MyPhpCode\01.php:33:boolean true
cookie信息


为cookie设置值

<?php
$returnValue = setcookie('cookie_2','cookie_2_value'); // cookie名称:cookie_2 , cookie值:cookie_2_value
var_dump($returnValue);
?>
// 运行结果
D:\WampServer\www\MyPhpCode\01.php:28:boolean true
cookie详细

细心的读者可能发现了一个问题:之前创建的cookie_1到哪里去了?
emm...... 消失了,对的,它已经人间蒸发了。

人间蒸发????那我这么辛苦的码了两行代码才搞到客户端里的小饼干(cookie)就这么没了???

**



再运行下php脚本,火速到浏览器查看下cookie。
Image
cookie到期时间为“浏览器回话结束”,嗯哼,那么说我的小饼干会在页面关闭后消失咯。
。。。。。

怎么玩?唯有续命
给小饼干续命就用第三个参数 expire
expire参数设置cookie的有效期,也就是小饼干更可以活多久,至于活多久,就由你来决定了。
注意:此参数接收时间戳。php会内部转换日期。

为cookie设置到期时间

<?php
$returnValue = setcookie('cookie_3','cookie_3_value',time()+30); // cookie有效时间为 30 秒
var_dump($returnValue);
?>

time()函数用于获取当前时间的时间戳

cookie详细
<?php
/**
 * 此php用于获取上面的设置的cookie(cookie_3)的值
 * 获取方式:$_CIOOKIE[]
 * 要在cookie_3创建30秒内获取,不然你会收到错误:‘Notice: Undefined index: cookie_3 ’
 */
$cookieName = "cookie_3" ;            // 要获取的cookie的名称
$cookieValue = $_COOKIE[$cookieName]; // 获取对应值
var_dump($cookieValue);
?>
// 输出
D:\WampServer\www\MyPhpCode\02.php:5:string 'cookie_3_value' (length=14)

等等 ???cookie不是保存在客户端的么,php运行在服务端,为什么php可以搞到客户端的cookie??。那是因为客户端访问服务端时会带上cookie。

恍恍惚惚 反反复复

为cookie设置路径

路径,哦~~,cookie在客户端的存储路径而已,路径这种东西我早就知道了,不用说了。
呵,年轻人

其实cookie的路径并不是指客户端的存储路径,而是指php脚本在服务器的路径。看下面操作。

网站结构
 WWW
 |
 |- MyPhpCode
 |  |- 01.php
 |  |- 02.php
 |
 |- MyPhpCode2
 |  |- 01.php

网站根目录:WWW
/MyPhpCode/01.php:创建cookie
/MyPhpCode/02.php:获取cookie值
/MyPhpCode2/01.php:获取cookie值

现在用/MyPhpCode/01.php来设置一个cookie,然后使用/MyPhpCode2/01.php来读取cookie看看结果如何

<?php
/**
 * /MyPhpCode/01.php
 */
$returnValue = setcookie('cookie_4','cookie_4_value',time()+60,'/MyPhpCode'); // 指定路径为 /MyPhpCode
var_dump($returnValue);
?>
cookie详细
/**
 * /MyPhpCode2/01.php
 */
<?php
$cookieName = "cookie_4" ;
$cookieValue = $_COOKIE[$cookieName]; // 获取 cookie_4的值
var_dump($cookieValue);
?>
// /MyPhpCode2/01.php 输出
D:\WampServer\www\MyPhpCode2\01.php:5:null
同时还报了 Notice: Undefined index: cookie_4 错误

并不能读取cookie_4的值

现在用 /MyPhpCode/02.php 来尝试下

/**
 * /MyPhpCode/02.php
 */
<?php
$cookieName = "cookie_4" ;
$cookieValue = $_COOKIE[$cookieName]; // 获取 cookie_4的值
var_dump($cookieValue);
?>
//  /MyPhpCode/02.php 输出
D:\WampServer\www\MyPhpCode\02.php:5:string 'cookie_4_value' (length=14)

以上对比可以看出,如果设置了cookie的路径,要与设置cookie的php处于同于路径之下才有权访问cokie。

到这里,PHP中cokie的操作已经介绍的 七七八八了 ,至于setcookie() 函数后面几个参数,哼哼哼哼哼哼哈哈哈哈哈哈哈哈哈,我也不太了解,这么跟你说吧,我就是半吊子。等有空学下其他的cookie操作再续写文章了。

-


今天没有总结,再见。
告辞

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 215,384评论 6 497
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,845评论 3 391
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 161,148评论 0 351
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,640评论 1 290
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,731评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,712评论 1 294
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,703评论 3 415
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,473评论 0 270
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,915评论 1 307
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,227评论 2 331
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,384评论 1 345
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,063评论 5 340
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,706评论 3 324
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,302评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,531评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,321评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,248评论 2 352

推荐阅读更多精彩内容

  • Cookie是存储在客户端浏览器中的数据,我们通过Cookie来跟踪与存储用户数据。一般情况下,Cookie通过H...
    foolgry阅读 233评论 0 0
  • 会话(Session)跟踪是Web程序中常用的技术,用来跟踪用户的整个会话。常用的会话跟踪技术是Cookie与Se...
    chinariver阅读 5,613评论 1 49
  • 目录Cookie机制什么是CookieCookie的不可跨域名性Unicode编码:保存中文BASE64编码:保存...
    Tomatoro阅读 16,940评论 7 186
  • 作者:晚晴幽草轩www.jeffjade.com/2016/10/31/115-summary-of-cookie...
    饥人谷_Dylan阅读 1,224评论 0 51
  • 背景在HTTP协议的定义中,采用了一种机制来记录客户端和服务器端交互的信息,这种机制被称为cookie,cooki...
    时芥蓝阅读 2,360评论 1 17