<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>-Flyぁ梦- &#187; cookie</title>
	<atom:link href="http://blog.11034.org/tag/cookie/feed" rel="self" type="application/rss+xml" />
	<link>http://blog.11034.org</link>
	<description></description>
	<lastBuildDate>Sun, 22 Jun 2025 08:59:05 +0000</lastBuildDate>
	<language>zh-CN</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>https://wordpress.org/?v=4.2.38</generator>
	<item>
		<title>wp-postviews的防刷新的处理</title>
		<link>http://blog.11034.org/2010-09/wp-postviews_do_with_page_refresh.html</link>
		<comments>http://blog.11034.org/2010-09/wp-postviews_do_with_page_refresh.html#comments</comments>
		<pubDate>Tue, 14 Sep 2010 15:11:34 +0000</pubDate>
		<dc:creator><![CDATA[-Flyぁ梦-]]></dc:creator>
				<category><![CDATA[Wordpress]]></category>
		<category><![CDATA[cookie]]></category>
		<category><![CDATA[Firefox]]></category>

		<guid isPermaLink="false">http://blog.stariy.info/?p=411</guid>
		<description><![CDATA[wp-postviews是很好用的一款用来统计每篇文章pv（page view）的插件，还能在sidebar提 [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>wp-postviews是很好用的一款用来统计每篇文章pv（page view）的插件，还能在sidebar提供一个top view的小工具，十分赞，是为数不多的wordpress博客必备的插件之一。不过它有一个不足，就是pv不防刷新，即你对同一篇文章短时间内刷新几次，就是几个pv，而这样的pv是毫无意义的，就起了个念头来改善一下。<span id="more-411"></span></p>
<p>很显然，要记录访问者短时间内访问的每一篇文章，cookie是必须出场的，当然记录的是每篇文章的post id号。能读取到cookie中的所有已阅的文章id，就可以控制是否对此文章的pv更新+1了，在wp-postviews的wp-postviews.php里的process_postviews()函数里插入一个自己的判断函数即可。</p>
<p>然后一个很大的问题就是何时写入cookie并点击新文章时更新cookie，在wp-postviews.php里面是不行的，因为前面已经有输出了，此处不能写入cookie，比较棘手。然后在主题的single.php试了一下，居然可以，那就在这里写cookie吧。由于在主题的大循环（single.php的显示文章部分）外，无法使用get_the_ID()这个API，而基本上所有的博客都会采用路径重写，而不是默认的/?p=id这种形式，后来发现，在single.php可以使用一个$posts的全局变量，里面有本次请求的基本参数，不了解的同学去print_r()就知道啦，解决了文章id的获取，就可以使用setcookie来写入和更新cookie了。</p>
<p>试了一下基本没问题，IE、FF、Chrome都支持。很奇怪的一点，为什么single.php是可以操纵写入cookie呢？照理来说，这个文件之前已经有HTML输出了，是应该不能写cookie的，而且我尝试在single.php和wp-postviews.php 2个文件的顶端同时调用exit()，是后者的先出来。这说明先调到了插件计数，然后再显示页面的，但却前面的不能写cookie，后面的反而可以，疑惑了&#8230;不知道wordpress是怎么处理的 <img src="http://blog.11034.org/wp-includes/images/smilies/icon_question.gif" alt=":?:" class="wp-smiley" style="height: 1em; max-height: 1em;" /></p>
<p>技术部分就到这儿了，另外发现一个奇怪的地方，仅在于Firefox。进入一篇文章的页面，居然cookie里面有2个id，后来发现第二个id是此篇文章的下一篇，即head中&lt;link rel=&#8217;next&#8217; /&gt;标签。百度后发现，浏览器会根据这标签提前加载页面，相当于同时打开了2篇文章。个人感觉这个功能很鸡肋，起码在wordpress中是如此，看那篇文章完全是因为文章的内容来吸引访问者，又不是RSS，按顺序一篇一篇读下去。不知道算是FF的一个优势还是一个败笔。</p>
<p>贴一下代码：<br />
wp-postviews.php的process_postviews()中$post初始化后添加2行：</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
</pre></td><td class="code"><pre class="php" style="font-family:monospace;"><span style="color: #b1b100;">if</span><span style="color: #009900;">&#40;</span>check_cookie<span style="color: #009900;">&#40;</span><span style="color: #000088;">$post</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span>
	<span style="color: #b1b100;">return</span><span style="color: #339933;">;</span></pre></td></tr></table></div>

<p>wp-postviews.php加入函数：</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
</pre></td><td class="code"><pre class="php" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">function</span> check_cookie<span style="color: #009900;">&#40;</span><span style="color: #000088;">$post</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
	<span style="color: #000088;">$COOKNAME</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">'CookieViews'</span><span style="color: #339933;">;</span>
	<span style="color: #000088;">$cookie</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$_COOKIE</span><span style="color: #009900;">&#91;</span><span style="color: #000088;">$COOKNAME</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span>
	<span style="color: #000088;">$id</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$post</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">ID</span><span style="color: #339933;">;</span>
	<span style="color: #b1b100;">if</span><span style="color: #009900;">&#40;</span><span style="color: #990000;">empty</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$id</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
		<span style="color: #b1b100;">return</span> <span style="color: #009900; font-weight: bold;">false</span><span style="color: #339933;">;</span>
	<span style="color: #009900;">&#125;</span>
	<span style="color: #b1b100;">if</span><span style="color: #009900;">&#40;</span><span style="color: #339933;">!</span><span style="color: #990000;">empty</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$cookie</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
		<span style="color: #000088;">$list</span> <span style="color: #339933;">=</span> <span style="color: #990000;">explode</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'a'</span><span style="color: #339933;">,</span> <span style="color: #000088;">$cookie</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		<span style="color: #b1b100;">if</span><span style="color: #009900;">&#40;</span><span style="color: #339933;">!</span><span style="color: #990000;">empty</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$list</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">&amp;&amp;</span> <span style="color: #990000;">in_array</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$id</span><span style="color: #339933;">,</span> <span style="color: #000088;">$list</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
			<span style="color: #b1b100;">return</span> <span style="color: #009900; font-weight: bold;">true</span><span style="color: #339933;">;</span>
		<span style="color: #009900;">&#125;</span>
	<span style="color: #009900;">&#125;</span>
	<span style="color: #b1b100;">return</span> <span style="color: #009900; font-weight: bold;">false</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span></pre></td></tr></table></div>

<p>single.php写cookie部分，放在最顶端</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
</pre></td><td class="code"><pre class="php" style="font-family:monospace;"><span style="color: #000088;">$COOKNAME</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">'CookieViews'</span><span style="color: #339933;">;</span>
<span style="color: #000088;">$TIME</span> <span style="color: #339933;">=</span> <span style="color: #cc66cc;">3600</span> <span style="color: #339933;">*</span> <span style="color: #cc66cc;">24</span><span style="color: #339933;">;</span>
<span style="color: #000088;">$PATH</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">'/'</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #000088;">$id</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$posts</span><span style="color: #009900;">&#91;</span><span style="color: #cc66cc;">0</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">ID</span><span style="color: #339933;">;</span>
<span style="color: #000088;">$expire</span> <span style="color: #339933;">=</span> <span style="color: #990000;">time</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">+</span> <span style="color: #000088;">$TIME</span><span style="color: #339933;">;</span>
<span style="color: #000088;">$cookie</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$_COOKIE</span><span style="color: #009900;">&#91;</span><span style="color: #000088;">$COOKNAME</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span>
<span style="color: #b1b100;">if</span><span style="color: #009900;">&#40;</span><span style="color: #990000;">empty</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$cookie</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
	<span style="color: #990000;">setcookie</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$COOKNAME</span><span style="color: #339933;">,</span> <span style="color: #000088;">$id</span><span style="color: #339933;">,</span> <span style="color: #000088;">$expire</span><span style="color: #339933;">,</span> <span style="color: #000088;">$PATH</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span>
<span style="color: #b1b100;">else</span><span style="color: #009900;">&#123;</span>
	<span style="color: #000088;">$list</span> <span style="color: #339933;">=</span> <span style="color: #990000;">explode</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'a'</span><span style="color: #339933;">,</span> <span style="color: #000088;">$cookie</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	<span style="color: #b1b100;">if</span><span style="color: #009900;">&#40;</span><span style="color: #339933;">!</span><span style="color: #990000;">in_array</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$id</span><span style="color: #339933;">,</span> <span style="color: #000088;">$list</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
		<span style="color: #990000;">setcookie</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$COOKNAME</span><span style="color: #339933;">,</span> <span style="color: #000088;">$cookie</span><span style="color: #339933;">.</span><span style="color: #0000ff;">'a'</span><span style="color: #339933;">.</span><span style="color: #000088;">$id</span><span style="color: #339933;">,</span> <span style="color: #000088;">$expire</span><span style="color: #339933;">,</span> <span style="color: #000088;">$PATH</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	<span style="color: #009900;">&#125;</span>
<span style="color: #009900;">&#125;</span></pre></td></tr></table></div>

<h4  class="related_post_title">看看 cookie , Firefox</h4><ul class="related_post"><li>2010-12-04 -- <a target="_blank" href="http://blog.11034.org/2010-12/google_page_speed.html" title="加速你的网站，Google page speed">加速你的网站，Google page speed</a></li><li>2010-03-18 -- <a target="_blank" href="http://blog.11034.org/2010-03/ie_is_tragedy.html" title="IE就是个悲剧…">IE就是个悲剧…</a></li></ul><h4 class="related_post_title">看看 Wordpress </h4><ul class="related_post"><li>2014-03-12 -- <a target="_blank" href="http://blog.11034.org/2014-03/new_url_to_template.html" title="wordpress改源码实现自定义URL到自定义页面">wordpress改源码实现自定义URL到自定义页面</a></li><li>2013-12-05 -- <a target="_blank" href="http://blog.11034.org/2013-12/wp-sns-share_2-8.html" title="wp_sns_share更新至2.8，添加小功能">wp_sns_share更新至2.8，添加小功能</a></li><li>2013-02-14 -- <a target="_blank" href="http://blog.11034.org/2013-02/wp_zjuem_in_wordpress.html" title="wp-zjuem，zju cc98表情系统 in wordpress">wp-zjuem，zju cc98表情系统 in wordpress</a></li><li>2012-09-26 -- <a target="_blank" href="http://blog.11034.org/2012-09/wordpress_post_actions.html" title="wordpress发布文章时的Action事件">wordpress发布文章时的Action事件</a></li><li>2012-08-29 -- <a target="_blank" href="http://blog.11034.org/2012-08/wp-sns-share_2-6.html" title="wp_sns_share更新至2.6，增加图片同步">wp_sns_share更新至2.6，增加图片同步</a></li>]]></content:encoded>
			<wfw:commentRss>http://blog.11034.org/2010-09/wp-postviews_do_with_page_refresh.html/feed</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>IE就是个悲剧…</title>
		<link>http://blog.11034.org/2010-03/ie_is_tragedy.html</link>
		<comments>http://blog.11034.org/2010-03/ie_is_tragedy.html#comments</comments>
		<pubDate>Wed, 17 Mar 2010 17:25:35 +0000</pubDate>
		<dc:creator><![CDATA[-Flyぁ梦-]]></dc:creator>
				<category><![CDATA[Trilogy]]></category>
		<category><![CDATA[cookie]]></category>
		<category><![CDATA[IE]]></category>
		<category><![CDATA[淘宝]]></category>

		<guid isPermaLink="false">http://stariy.info/blog/?p=11</guid>
		<description><![CDATA[前些日子完成的淘宝商城的访问统计，竟然已经爬到了380万+条pv记录&#8230; 早上，老大说统计有问题，u [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>前些日子完成的淘宝商城的访问统计，竟然已经爬到了380万+条pv记录&#8230;</p>
<p><span id="more-11"></span>早上，老大说统计有问题，uv/pv竟然只有1点几，这个是明显不符合常理的。查看数据库的记录，竟然大堆大堆的session记录都为1条，即一个用户在一个session之内只访问一次页面遍离开了。老大说也许是访问量过于大，服务器吃不消，在一次页面还没有被完全打开的时候，也就是服务器端的cookie还没有返回到客户端时，用户又发起了访问，于是这样就是2个不同session之间的访问了。于是测试，不对&#8230;被问用什么浏览器测的，答曰：Chrome和Firefox都正常。IE呢？ “IE？”对哦，貌似还有IE的存在！果然，问题就在IE，IE的默认安全级别不允许第三方cookie的写入，于是所有的IE用户的每次访问都是一个uv……悲剧。</p>
<p>今天上班，大家对着抓包器研究了半天http头，谁知百度了下发现有个很奇怪的p3p的属性，加到http头里面就好了，就能解决IE不允许第三方cookie的问题。方法如下：</p>

<div class="wp_syntax"><table><tr><td class="code"><pre class="java" style="font-family:monospace;">Java<span style="color: #339933;">:</span>
response.<span style="color: #006633;">addHeader</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;P3P&quot;</span>,<span style="color: #0000ff;">&quot;policyref=<span style="color: #000099; font-weight: bold;">\&quot;</span>http://p3p.yahoo.com/w3c/p3p.xml<span style="color: #000099; font-weight: bold;">\&quot;</span>, &quot;</span> <span style="color: #339933;">+</span>
	<span style="color: #0000ff;">&quot;CP=<span style="color: #000099; font-weight: bold;">\&quot;</span>CAO DSP COR CUR ADM DEV TAI PSA PSD IVAi IVDi CONi TELo OTPi OUR &quot;</span> <span style="color: #339933;">+</span>
	<span style="color: #0000ff;">&quot;DELi SAMi OTRi UNRi PUBi IND PHY ONL UNI PUR FIN COM NAV INT DEM CNT &quot;</span> <span style="color: #339933;">+</span>
	<span style="color: #0000ff;">&quot;STA POL HEA PRE GOV<span style="color: #000099; font-weight: bold;">\&quot;</span>&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></td></tr></table></div>


<div class="wp_syntax"><table><tr><td class="code"><pre class="php" style="font-family:monospace;">PHP<span style="color: #339933;">:</span>  <span style="color: #990000;">header</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'P3P:……同Java'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></td></tr></table></div>


<div class="wp_syntax"><table><tr><td class="code"><pre class="csharp" style="font-family:monospace;"><span style="color: #008000;">.</span><span style="color: #0000FF;">NET</span><span style="color: #008000;">:</span> HttpContext<span style="color: #008000;">.</span><span style="color: #0000FF;">Current</span><span style="color: #008000;">.</span><span style="color: #0000FF;">Response</span><span style="color: #008000;">.</span><span style="color: #0000FF;">AddHeader</span><span style="color: #008000;">&#40;</span><span style="color: #666666;">&quot;p3p&quot;</span>,<span style="color: #666666;">&quot;……同Java&quot;</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">;</span></pre></td></tr></table></div>

<p>数据库中的URL有乱码，肯定是中文的关系。测试，于是还是IE，淘宝的keyword属性有时候是中文，不过Chrome和Firefox都会自动将其URLEncoding传到服务器，IE懒懒地就传了ISO的编码的URL过去&#8230;只要将ISO-8895-1转化为UTF-8就行了。</p>
<p>不过又没办法，网银、rvpn都只能用IE，这日子啥时是个头&#8230;</p>
<p>今天鼻炎又犯，工作的效率好低&#8230;555</p>
<h4  class="related_post_title">看看 cookie , IE , 淘宝</h4><ul class="related_post"><li>2013-10-13 -- <a target="_blank" href="http://blog.11034.org/2013-10/tianmao_intern.html" title="天猫实习经历">天猫实习经历</a></li><li>2010-12-14 -- <a target="_blank" href="http://blog.11034.org/2010-12/play_music_in_wordpress.html" title="wordpress中播放音乐">wordpress中播放音乐</a></li><li>2010-09-14 -- <a target="_blank" href="http://blog.11034.org/2010-09/wp-postviews_do_with_page_refresh.html" title="wp-postviews的防刷新的处理">wp-postviews的防刷新的处理</a></li><li>2010-08-27 -- <a target="_blank" href="http://blog.11034.org/2010-08/ie_has_no_fault_tolerance.html" title="IE容错性之差无法容忍">IE容错性之差无法容忍</a></li><li>2010-04-27 -- <a target="_blank" href="http://blog.11034.org/2010-04/interview_of_taobao.html" title="记淘宝的笔试和面试">记淘宝的笔试和面试</a></li></ul><h4 class="related_post_title">看看 Trilogy </h4><ul class="related_post"><li>2010-03-26 -- <a target="_blank" href="http://blog.11034.org/2010-03/bus_traffic_in_trilogy.html" title="实习坐公交的一些事儿">实习坐公交的一些事儿</a></li>]]></content:encoded>
			<wfw:commentRss>http://blog.11034.org/2010-03/ie_is_tragedy.html/feed</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
	</channel>
</rss>
