> 呵呵,一直以来小邪就觉得在写程序的时候是不是漏了些什么,让PHP程序出现了瑕疵。
> 今天突然醒悟,原来还有 Cookie 没有搞定,这可是用户体验里很重要的一部分呢。

> 这篇文章大家就和小邪一起学用小甜饼吧,学得好的童鞋,奖励春哥侍寝一晚。
> 话说最近几天的前几篇文章,貌似有点水哈,因为过节的时候小邪也很水 O(∩_∩)O。
1. 了解 Cookie:
> Cookie 常用于识别用户身份,一般用于保存加密的账号和密码,(*^__^*) 。
> Cookies 是由服务器留在用户计算机中的一些信息文本文件所组成。
> 每当相同的计算机通过浏览器请求页面时,它同时会发送出去 Cookie。
> 这样,第二次进入这个网站的时候,就不用保存密码了哟。
2. PHP Cookie 存储与读取:
> 嘻嘻 (^o^),在这个地方填入你的昵称,然后点击确认按键即可。
> 程序就会将你的昵称存为 Cookie,然后读取并显示出来呢。

> 在 Cookie 失效(10分钟)之前,随便怎样调戏这个程序,都会显示这个样子咯。

> 牛叉的星际传送门 - http://www.evlos.org/apps/demo/cookie
3. 源代码讲解:
<?php
if (isset($_POST['user'])) { //首先检测是否获得了 POST 传递的昵称数据
$div1 = 'style="display:none;"'; //有则隐藏昵称输入框,此字符串输出于 DIV 标签内
$div2 = ''; //显示另外一个带欢迎语的显示 Cookie 的 DIV,嘿嘿
setcookie('cookie_test',$_POST['user'],time()+600); //同时保存昵称为 Cookie
$show = $_POST['user']; //显示昵称
}
else if (isset($_COOKIE["cookie_test"])) { //检测是否存在昵称Cookie
$div1 = 'style="display:none;"'; //有则隐藏昵称输入框
$div2 = ''; //显示一个带欢迎语的显示Cookie的DIV
$show = $_COOKIE["cookie_test"]; //显示Cookie保存的昵称数据
}
else {
$div1 = ''; //显示昵称输入框与按键
$div2 = 'style="display:none;"'; //隐藏显示Cookie的DIV,因为这时无Cookie
$show = ''; //纯初始化此变量
}
?>
4. 分段讲解:
> 注意!!Setcookie() 函数必须位于 标签之前。
<?php
setcookie(name, value, expire, path, domain);
//此函数用于设置 Cookie,Name为变量名,Value为变量值,Expire为存储时间
//Path为路径,如果需要,一般都为"/",Domain为作用域,比如设置为".evlos.org"
//那么此 Cookie 在所有 evlos.org 的子域名下面都是有效的喔
echo $_COOKIE["user"];
//显示变量名为 user 的 Cookie 内容
print_r($_COOKIE);
//显示所有本站的 Cookies
setcookie("user", "", time()-3600000);
//清楚 Cookie,也就是将存储时间变为负值即可
?>
5. WordPress 中的存储 Cookies 的变量:
> WP 程序会自动取出 Cookies 赋值到下面变量中,可以直接用在模板上的。
<?php echo $comment_author; //名称栏 ?> <?php echo $comment_author_email; //邮箱栏 ?> <?php echo $comment_author_url; //网址栏 ?>
6. 单独获取WP评论者昵称(站内,模板外):
> 这个是WP中定义COOKIEHASH常量的代码,嘎嘎 O(∩_∩)O。
/**
* Used to guarantee unique hash cookies
* @since 1.5
*/
define('COOKIEHASH', md5(get_option('siteurl')));
echo $_COOKIE['comment_author_'.md5('http://127.0.0.1/wp')];
//所以这样子就可以把 WP 中的评论者名字单独取出来了
> 若是WP安装在 /wp 目录里,那么保存 Cookie 的时候设置的 Path 就是 /wp。
> 也就是说,如果你把上面代码放在 /wp 目录上一层是无效的,比如这里 / 或者 /cookie。

> 牛叉的星际传送门 - http://www.evlos.org/apps/demo/cookie/wp.php
竟然没看懂
再看第二遍 ...
@619 , 呵呵,5:36还没睡,童鞋你是不是隔一天就通宵一次的 ~ 通宵牛人 ~!
@邪 罗刹,
嘿嘿,那不是放假呢吗,现在开学了,闹腾不了啦 ..
11点熄灯,乖乖睡觉 :biggrin:
@619 , 晕,害小邪以为你失踪了,差点打10086,要工作人员往所有手机上发布寻找裸男的短信 ~
@邪 罗刹,
围一个脖不就找到咯 :biggrin:
@619 , = =,头一次知道你用围脖 ~ 哪儿的?
@邪 罗刹,
新浪的
@619 , = =,查找昵称包含619的,结果有一大堆人 ~
http://t.sina.com.cn/evlos
这个是小邪的来着,下次想办法把微博全部同步起来 ~
竟然有板凳...拿下......
@mice , 呵呵,早起的鸟儿有虫吃 ~ :biggrin:
= = 虽然小邪中午才起床 ~ :exclaim:
再来水一个留言 再拿下...
@mice , 汗 ~ 小邪的菠萝阁被你连续调戏俩次 ~
哈哈,我只看懂一个,我的刷新按键在左上角!
@阿吴 , 很好,看懂就好 ~ 哈哈 ~
我看到不少博客已经有这个功能了!
@GEZ鸽子 , = =,所有的博客程序都有这个功能,问题是模板有没有启用的了 ~
抛砖引玉啦。。
@kaka , 朝619抛一块砖,他会给我一块玉 ~ :surprised:
@邪 罗刹,
我给你一枪子儿
@619 , 耶,被你发现了,哎呀呀,速度撤退 ~
这个我喜欢,可是已经没用WP了...
@Martin , 汗,这个是讲Cookies,顺便提到WP而已 ~
呵呵,有点意思,我只管用,没有这么深入研究过
@万戈 , 呵呵,小邪得搞通透来,不然会像上次输出邮件列表一样 ~
少学了一个函数就比别人程序多出几十行 ~
太杯具了 ╮(╯_╰)╭
PHP没用过....
@Jonllen , 呵呵,没事 ~
@ZhangGe , 恩恩,组队膜拜 ~
你还想让春哥陪你过夜,也不怕做恶梦啊!
@huangjun , :exclaim: 囧 ~
我认为客户端js保存cookie,服务器端程序读取是较好的cookie利用方式。。。。
还有我测试在wp模板里不管利用php原生的setcookie()或者wp的设置函数wp_setcookie()都会报错,不知什么原因。。。。难道要用 wp_set_auth_cookie()才行?
@QiQiBoY , 刚刚小邪在模板里测试了一下 ~
setcookie('cookie_test','good',time()+600);没有问题的额 ~ :biggrin:
@邪 罗刹,
是加在wp的模板文件里啊,比如header或index、single里,我的一加就报错。单独建立个php文件测试则正常。
@QiQiBoY , 杯具了 ~
< ?php setcookie('cookie_test','good',time()+600); if (isset($_COOKIE['cookie_test'])) { echo $_COOKIE['cookie_test']; } ?>
小邪刚刚又测试了一遍,加到 header.php 里面 ~
很正常额,你的模板貌似有点点奇怪喔 ~
过来学Setcookie()方法~~~
@fatkun , 呵呵,简单也挺有效的 ~
现在cookie很不安全吧。好像很多都有加密的了,但基本原理还是你这样的了。
我学的不好,所以不用春哥了,哈哈
@Rusaer , 嘻嘻,春哥已经奖励给沙发上的那位了 ~ :biggrin:
哈哈 有时候这些小的东西可以带来很大的方便,但是同时 也会带来蛮大的安全隐患~~如果你的网站有XSS漏洞的话,我可以很轻而易举的得到你在大家电脑上写下的Cookie喔~~特别像邮箱这种东西~~一个两个不值钱,积攒多了,卖给“垃圾制造者”的话~~也不便宜吧 嗯嗯~~
@Kaisir.Wang , 前提的有XSS漏洞,然后才能轻而易举地得到Cookies ~
小邪在安全方面还是比较重视的呢 ~ 嘎嘎 ~ :biggrin:
小邪的小饼干呀~~哈哈! :surprised:
@apollools , 嘿嘿,小邪请你吃饼干 ~
冲着春哥来的,哈哈。貌似小邪起得很早嘛...是不是下次要讲session了。
@g , 嘻嘻,Session还没用到,下次讲一点点正则式 ~
@邪 罗刹,
正则蛮烦的,碰到正则问题基本上都是拿来主义。
@g , 恩恩,特烦,网上的教程和书籍都又繁杂,又难学 ~
小邪很多语法都是通过正常的逻辑猜测并多次测试出来的 ~
小邪真是好童鞋! :biggrin:
ps:春哥就免了,偶喜欢异性……
@北街 , 嘿嘿嘿,春哥喜欢菊花 ~
讲得很通俗易懂。好老师啊。
@三七八蛋 , 囧,邪老师?!汗,算鸟,还是邪老湿吧 ~
不错不错。受教了。
@Nox , 呵呵,对你有帮助就是最好的事情了 ~
那个cookies不是存在本地么?
@漠岚 , 是啊,是存在本地呀 ~
只是用服务端来操控的 ~
呵呵,自己弄的一个。不过貌似比你的复杂点。。。
http://imn.im/tools/cookies/
@Nox , 囧,哪里复杂了?没看出来,能解说下吗?小邪好学习学习 ~
@邪 罗刹,
难道你没有发现,我多了一个echo,哇哈哈。这个echo只是为了告诉你,丫的,赶快去留言,在来看。。。
@Nox , 仰天长叹:“啊,啊,啊,啊,啊,啊,啊啊啊啊啊,牛叉 ~”
@邪 罗刹,
哎呀,技术太菜了,我得抓紧学习。。也弄两个小工具给大家耍耍。哈哈。
@Nox , 写个在线生成AV的程序吧,保证受欢迎到爆 ~
为啥不找个现成的代码呢?网上很多呀
@卢松松 , 囧了,找现成代码干啥?小邪是在学习使用PHP操作Cookies的过程呀 ~
@邪 罗刹,
难怪呢 呵呵 好好学习
@卢松松 , 嘿嘿,没事,卢松松每天要跑那么多博客上留言,小邪理解的 ~ :redface:
你用cookies想储存什么?一般都不用cookies,除非迫不得已丫的要照顾用户体验。。 :confused:
@Jerry Chen , 呵呵,玩玩而已,防止啥时候用到却没有头绪 ~
而且上次有个童鞋WP模板评论者信息那里没有读取Cookies出来 ~
结果问我,当时没搞定呢 ~
现在没问题了~
在你面前我真的很无知
@娱乐博客 , 别这样比嘛,你肯定有什么长处,如果相比,那小邪也会显得很无知的 ~
这高深了 看了白看 反正编程跟我无关
@江流 , 呵呵,个人爱好不同,没有关系,O(∩_∩)O ~
显示证明我在这里留过言!
@sweetdrug , 恩恩,小邪看到你了,嘎嘎,被小邪抓到要打屁屁的 ~
不太懂cookies
@开心凡人 , 呵呵,没关系呢,小邪自个儿调戏自个儿 ~
都是技术文章啊,挺佩服你的
@真好网 , 呵呵,还好啦,小邪也在学习中 ~
话说小邪童鞋学编程的?
@AA牌熊仔饼 , 没,编程自学的,专业是金融 ~
@邪 罗刹,
啊~~~
受刺激了
我要学习!!!
@Auston Jary , 嘿嘿,真开心可以为你提供动力 ~
同行.
@苏扬 , ? :confused:
还是写点文章吧 我喜欢看别人写的情感性、文学性的文章
@苏扬 , ................ ~ 无语 ~
实在是写不来文学情感类文章,小邪的学校语文成绩是垫底的 ~
真的写不出这些东西 ~
杯具 ~
通常是通过JavaScript处理cookies的吧?
@bolo , = =,小邪对JavaScript十窍通了九窍 ~
现在让小邪用JS来处理Cookies,还是把鼠标吞下去来得容易些 ~
O(∩_∩)O 哈哈 ~
以后再学罗 ~
拜读了,不错。
@赢在网络 , 呵呵,谢谢你的支持呦 ~ :redface:
以后没天来你这学习
@Auston Jary , 嘎嘎,文章能对你有用,小邪真开心 ~
没时间 周末再来仔细看看 呵呵
@17doit , 呵呵,好好休息,别累着了 ~
说真的,我还真没看懂代码 :exclaim:
@YYWR , 呵呵,没事儿,有兴趣的话多研究研究就懂了 ~
没兴趣的话当做鸟文看着,也不错 ~ 哈哈 ~ :biggrin:
恩, 讲得挺好.. 我看明白了. :biggrin:
看样子,小邪已经开始慢慢走火入魔了,代码的事,永远敲不完哦。。。
@Sawyer , 小邪没救了 ~ 别拦着偶,要不推一把吧 ~
@柳城,
喔耶,真高兴对你有用呢 ~
@邪 罗刹 , 囧,后台回复留言太囧了 ~
呵呵,不错,过来学习了.
@diyidu , 呵呵,对你有用真让人开心 ~
好复杂,头晕,我是个技术盲
@隐侠 , 汗 ~ 淡定 要淡定 ~ 习惯就好了 ~
作用域一直弄不清
@九站 , 唔,一般是继承性的 ~ 也就是比如 /1/1/2 和 /1/1 ~
作用域设置为 /1 ,则下面都可以读取此小甜饼 ~
cookie
记住密码那个东西.貌似以前可以欺骗挑战. 
@Shang , 呵呵,现在每个网站都有这个功能来着 ~
一般密码保存都会做好多层加密,例如连续俩次md5 ~
强力点的就结合 Session ~
而且要欺骗可是需要漏洞来着 ~
小邪还是挺小心的说 ~