<?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/"
		xmlns:xhtml="http://www.w3.org/1999/xhtml"
>

<channel>
	<title>ウェブル &#187; Cookie</title>
	<atom:link href="http://kezy.org/category/cookie/feed" rel="self" type="application/rss+xml" />
	<link>http://kezy.org</link>
	<description>なかなか就職できない PHP + MySQL 時々 Javascript を弄る20才</description>
	<lastBuildDate>Tue, 27 Jul 2010 02:39:42 +0000</lastBuildDate>
	<language>ja</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0</generator>
<xhtml:link rel="alternate" media="handheld" type="text/html" href="http://kezy.org/category/cookie/feed" />
		<item>
		<title>Cookie を有効にする方法</title>
		<link>http://kezy.org/2010/03/29/cookie-on</link>
		<comments>http://kezy.org/2010/03/29/cookie-on#comments</comments>
		<pubDate>Mon, 29 Mar 2010 03:36:45 +0000</pubDate>
		<dc:creator>Sorai</dc:creator>
				<category><![CDATA[Cookie]]></category>

		<guid isPermaLink="false">http://kezy.org/?p=3923</guid>
		<description><![CDATA[Cookie はブラウザに情報を保存するために使用されます。Cookie が無効の場合、ショッピングサイトなどで商品注文ができなかったり会員向けサイトにログインできなくなることがあります。
Internet Explor<p><a href="http://kezy.org/2010/03/29/cookie-on" class="excerpt_more">...続きを読む</a></p>]]></description>
			<content:encoded><![CDATA[<p>Cookie はブラウザに情報を保存するために使用されます。Cookie が無効の場合、ショッピングサイトなどで商品注文ができなかったり会員向けサイトにログインできなくなることがあります。</p>
<h3>Internet Explorer 6/7 で Cookie を有効にする方法</h3>
<p>ツール -> インターネットオプション -> プライバシー -> 詳細設定 ->  プライバシー設定の詳細</p>
<ol>
<li>自動 Cookie 処理を上書きするにチェックを入れる。</li>
<li>ファーストパーティの Cookie で受け入れるを選択。</li>
<li>サードパーティの Cookie で受け入れるを選択。</li>
<li>常にセッション Cookie を許可するにチェックを入れる。</li>
</ol>
<p>以下のページに図を使った分かりやすい説明がありましたので、ご紹介致します。<br />
<a href="http://www.personal-media.co.jp/webshop/enable_cookie.html">ご利用環境(Cookieを有効にする) &#8211; パーソナルメディアウェブショップ</a></p>
]]></content:encoded>
			<wfw:commentRss>http://kezy.org/2010/03/29/cookie-on/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
	<xhtml:link rel="alternate" media="handheld" type="text/html" href="http://kezy.org/2010/03/29/cookie-on" />
	</item>
		<item>
		<title>Cookie を jQuery ならたった一行のコードで発行したり読み込んだりできる</title>
		<link>http://kezy.org/2009/09/19/cookie-jquery</link>
		<comments>http://kezy.org/2009/09/19/cookie-jquery#comments</comments>
		<pubDate>Sat, 19 Sep 2009 05:16:52 +0000</pubDate>
		<dc:creator>Sorai</dc:creator>
				<category><![CDATA[Cookie]]></category>
		<category><![CDATA[jQuery]]></category>

		<guid isPermaLink="false">http://kezy.org/?p=2813</guid>
		<description><![CDATA[jQuery を使えば今まで Javascript で Cookie を焼いていて、現在の時間を取得して、期限を指定して…ってやってたのが笑えてくるほど簡単になります。
Cookie を焼く
もう、これだけです。

1
<p><a href="http://kezy.org/2009/09/19/cookie-jquery" class="excerpt_more">...続きを読む</a></p>]]></description>
			<content:encoded><![CDATA[<p>jQuery を使えば今まで Javascript で Cookie を焼いていて、現在の時間を取得して、期限を指定して…ってやってたのが笑えてくるほど簡単になります。</p>
<h3>Cookie を焼く</h3>
<p>もう、これだけです。</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
</pre></td><td class="code"><pre class="javascript" style="font-family:monospace;">$.<span style="color: #660066;">cookie</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'cookiename'</span><span style="color: #339933;">,</span><span style="color: #3366CC;">'value'</span><span style="color: #339933;">,</span><span style="color: #009900;">&#123;</span> expires<span style="color: #339933;">:</span> <span style="color: #CC0000;">7</span> <span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></td></tr></table></div>

<h4>cookiename</h4>
<p>cookie の名前です。</p>
<h4>value</h4>
<p>焼く内容です。</p>
<h4>expires: 7</h4>
<p>有効期限7日ってことです。</p>
<h3>Cookie を読み込む</h3>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
</pre></td><td class="code"><pre class="javascript" style="font-family:monospace;">$.<span style="color: #660066;">cookie</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'cookiename'</span><span style="color: #009900;">&#41;</span></pre></td></tr></table></div>

<p>これだけなんです。</p>
<h3>ダウンロード</h3>
<p>ちなみにこれを使うには以下が必要です。<br />
<a href="http://jquery.com/">jquery.js</a><br />
<a href="http://dev.jquery.com/browser/trunk/plugins/cookie/jquery.cookie.js?format=txt">jquery.cookie.js</a></p>
<p>jQuery.js に標準に入れても良いような気がするほど便利ですね。</p>
]]></content:encoded>
			<wfw:commentRss>http://kezy.org/2009/09/19/cookie-jquery/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
	<xhtml:link rel="alternate" media="handheld" type="text/html" href="http://kezy.org/2009/09/19/cookie-jquery" />
	</item>
		<item>
		<title>初めて Cookie を PHP や Javascript で送信したり削除してサイトをパワーアップ</title>
		<link>http://kezy.org/2009/03/19/cookie</link>
		<comments>http://kezy.org/2009/03/19/cookie#comments</comments>
		<pubDate>Thu, 19 Mar 2009 04:55:54 +0000</pubDate>
		<dc:creator>Sorai</dc:creator>
				<category><![CDATA[Browser]]></category>
		<category><![CDATA[Cookie]]></category>
		<category><![CDATA[Javascript]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[setcookie]]></category>

		<guid isPermaLink="false">http://kezy.org/?p=1596</guid>
		<description><![CDATA[Google で「カロリー」と検索すると検索結果の2番目に出てくる驚異的な個人サイト「食品の摂取カロリー計算」は知らない人はいないほどカロリー系のサイトの中では有名です。このサイトを見習って、私のサイトにもカロリー計算コ<p><a href="http://kezy.org/2009/03/19/cookie" class="excerpt_more">...続きを読む</a></p>]]></description>
			<content:encoded><![CDATA[<p>Google で「カロリー」と検索すると検索結果の2番目に出てくる驚異的な個人サイト「<a href="http://homepage2.nifty.com/WM/calorie.htm">食品の摂取カロリー計算</a>」は知らない人はいないほどカロリー系のサイトの中では有名です。このサイトを見習って、私のサイトにもカロリー計算コーナーを設置したいと思います。<span id="more-1596"></span></p>
<p>食品の摂取カロリー計算では Javascript を使用してカロリーの計算を実現しているようですが、私は <a href="http://e-words.jp/w/Cookie.html">Cookie</a> を使って<a href="http://c-list.net/">カロリーデータベース</a>に計算フォームを付けることにしました。</p>
<p>でも Cookie を使うのは初めてなので、いろいろと勉強してみました。一応以下のページにすべてまとめてありますが、詳しく掘り下げて知ろうと思うとこのページだけではダメなので、それを以下にまとめました。<br />
<a href="http://www.tohoho-web.com/wwwcook.htm">とほほのCookie入門</a></p>
<h3>Cookie には制限がある</h3>
<blockquote><p>1つのクッキーに保存できるのは最大で4096バイト、1台のサーバが同じコンピュータに対して発行できるクッキーの数は20個という制限が設けられています。</p></blockquote>
<p><a href="http://nyx.pu1.net/practice/cookie/cookie1.html">PHPスクリプト講座：クッキーについて &#8212; そふぃのphp入門</a>より抜粋。</p>
<p>ここで疑問が。以下のどれが正解かわからなくなりました。</p>
<ol>
<li>サーバーは20個発行したら、それ以上は発行できなくなる。</li>
<li>サーバーは20個発行した後、21個目を1個目を削除し発行する。</li>
<li>ブラウザは同一サーバーから20個 Cookie を受け取ったら、それ以上受け取れなくなる。</li>
<li>ブラウザは同一サーバーから20個 Cookie を受け取ったら、21個目を1個目を削除して受け取る。</li>
</ol>
<p>もし1と2のどちらかが正解の場合は、共有のレンタルサーバーを使っている人には、事実上 Cookie を使えないということになり、Cookie はちゃんとしたサイトじゃないと使えなくなってしまう。そしてもし3が正解だったら最初に20個発行したもの勝ちになってしまうので絶対違う。</p>
<p>消去法で行くと4つ目の解釈で正しいと思うんですが、今の私にははっきりとした正解はわかりません。<br />
でもとりあえず同じサーバー内の人のサイトには、そう簡単にめぐり合うことはないと思うので大丈夫だと思います。このまま Cookie について勉強していきます。</p>
<h3>Cookie を送信する</h3>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
</pre></td><td class="code"><pre class="php" style="font-family:monospace;"><span style="color: #000088;">$name</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">'名前'</span><span style="color: #339933;">;</span>
<span style="color: #000088;">$value</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">'値'</span><span style="color: #339933;">;</span>
<span style="color: #990000;">setcookie</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$name</span><span style="color: #339933;">,</span><span style="color: #000088;">$value</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></td></tr></table></div>

<p>単純にこのような形で送信できます。でも先ほど書いたように同一サーバーから20個しかCookieを送信することはできないので、できるだけ最小限の個数で抑えるために配列を使ったりするのが一般的みたいです。<br />
<a href="http://jp.php.net/setcookie">PHP: setcookie &#8211; Manual</a><br />
<a href="http://nyx.pu1.net/practice/cookie/cookie6.html">PHPスクリプト講座：配列を利用したクッキー &#8212; そふぃのphp入門</a></p>
<h3>Javascript を使ってクッキーを送信する</h3>
<p>PHP では &lt;html&gt; より前の部分でクッキーの送信などをしなければいけないので、訪問者にページの表示が完了してから Cookie を送信させるには PHP では不可能です。ということで自ずとJavascript を使うことになるみたいです。Javascript はめちゃくちゃ扱いにくいから、ここ本気出して考えました。</p>
<p>まずは<a href="http://www.red.oit-net.jp/tatsuya/java/cookie.htm">イヌでもわかるJavaScript講座</a>で紹介されているスクリプトをそのまま使ってみるパターン。このサイトはかなり役に立ちました。感謝！</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
</pre></td><td class="code"><pre class="javascript" style="font-family:monospace;"><span style="color: #003366; font-weight: bold;">function</span> mySetCookie<span style="color: #009900;">&#40;</span>myCookie<span style="color: #339933;">,</span>myValue<span style="color: #339933;">,</span>myDay<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
   myExp <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">new</span> Date<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
   myExp.<span style="color: #660066;">setTime</span><span style="color: #009900;">&#40;</span>myExp.<span style="color: #660066;">getTime</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">+</span><span style="color: #009900;">&#40;</span>myDay<span style="color: #339933;">*</span><span style="color: #CC0000;">24</span><span style="color: #339933;">*</span><span style="color: #CC0000;">60</span><span style="color: #339933;">*</span><span style="color: #CC0000;">60</span><span style="color: #339933;">*</span><span style="color: #CC0000;">1000</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
   myItem <span style="color: #339933;">=</span> <span style="color: #3366CC;">&quot;@&quot;</span> <span style="color: #339933;">+</span> myCookie <span style="color: #339933;">+</span> <span style="color: #3366CC;">&quot;=&quot;</span> <span style="color: #339933;">+</span> escape<span style="color: #009900;">&#40;</span>myValue<span style="color: #009900;">&#41;</span> <span style="color: #339933;">+</span> <span style="color: #3366CC;">&quot;;&quot;</span><span style="color: #339933;">;</span>
   myExpires <span style="color: #339933;">=</span> <span style="color: #3366CC;">&quot;expires=&quot;</span><span style="color: #339933;">+</span>myExp.<span style="color: #660066;">toGMTString</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
   document.<span style="color: #660066;">cookie</span> <span style="color: #339933;">=</span>  myItem <span style="color: #339933;">+</span> myExpires<span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span></pre></td></tr></table></div>

<p>スクリプトの解説はイヌでもわかるJavaScript講座にありますので省きますです。<br />
一応私が一番重要(厄介)だと思うところは escape() の部分でして、これは PHP ではデコードすることはできません。でもそれを PHP でもデコードできるようにした人がいました。すごいです。</p>
<p><a href="http://jp2.php.net/utf8_encode#58442">PHP: utf8_encode &#8211; Manual</a><br />
<a href="http://dozo.matrix.jp/pear/index.php?PEAR%2FHTML_AJAX%2Funescape">unescape(PHP)関数 Javascript版escape日本語POST対応 PEAR::HTML_AJAX &#8211; PHP::PEAR &#8211; dozo PukiWiki</a></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
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
</pre></td><td class="code"><pre class="php" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">&lt;?php</span>
<span style="color: #009933; font-style: italic;">/**
 * Function converts an Javascript escaped string back into a string with specified charset (default is UTF-8).
 * Modified function from http://pure-essence.net/stuff/code/utf8RawUrlDecode.phps
 *
 * @param string $source escaped with Javascript's escape() function
 * @param string $iconv_to destination character set will be used as second paramether in the iconv function. Default is UTF-8.
 * @return string
 */</span>
<span style="color: #000000; font-weight: bold;">function</span> unescape<span style="color: #009900;">&#40;</span><span style="color: #000088;">$source</span><span style="color: #339933;">,</span> <span style="color: #000088;">$iconv_to</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">'UTF-8'</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
  <span style="color: #000088;">$decodedStr</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">''</span><span style="color: #339933;">;</span>
  <span style="color: #000088;">$pos</span> <span style="color: #339933;">=</span> <span style="color: #cc66cc;">0</span><span style="color: #339933;">;</span>
  <span style="color: #000088;">$len</span> <span style="color: #339933;">=</span> <span style="color: #990000;">strlen</span> <span style="color: #009900;">&#40;</span><span style="color: #000088;">$source</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
  <span style="color: #b1b100;">while</span> <span style="color: #009900;">&#40;</span><span style="color: #000088;">$pos</span> <span style="color: #339933;">&amp;</span>lt<span style="color: #339933;">;</span> <span style="color: #000088;">$len</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
      <span style="color: #000088;">$charAt</span> <span style="color: #339933;">=</span> <span style="color: #990000;">substr</span> <span style="color: #009900;">&#40;</span><span style="color: #000088;">$source</span><span style="color: #339933;">,</span> <span style="color: #000088;">$pos</span><span style="color: #339933;">,</span> <span style="color: #cc66cc;">1</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: #000088;">$charAt</span> <span style="color: #339933;">==</span> <span style="color: #0000ff;">'%'</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
          <span style="color: #000088;">$pos</span><span style="color: #339933;">++;</span>
          <span style="color: #000088;">$charAt</span> <span style="color: #339933;">=</span> <span style="color: #990000;">substr</span> <span style="color: #009900;">&#40;</span><span style="color: #000088;">$source</span><span style="color: #339933;">,</span> <span style="color: #000088;">$pos</span><span style="color: #339933;">,</span> <span style="color: #cc66cc;">1</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: #000088;">$charAt</span> <span style="color: #339933;">==</span> <span style="color: #0000ff;">'u'</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
              <span style="color: #666666; font-style: italic;">// we got a unicode character</span>
              <span style="color: #000088;">$pos</span><span style="color: #339933;">++;</span>
              <span style="color: #000088;">$unicodeHexVal</span> <span style="color: #339933;">=</span> <span style="color: #990000;">substr</span> <span style="color: #009900;">&#40;</span><span style="color: #000088;">$source</span><span style="color: #339933;">,</span> <span style="color: #000088;">$pos</span><span style="color: #339933;">,</span> <span style="color: #cc66cc;">4</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
              <span style="color: #000088;">$unicode</span> <span style="color: #339933;">=</span> <span style="color: #990000;">hexdec</span> <span style="color: #009900;">&#40;</span><span style="color: #000088;">$unicodeHexVal</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
              <span style="color: #000088;">$decodedStr</span> <span style="color: #339933;">.=</span> code2utf<span style="color: #009900;">&#40;</span><span style="color: #000088;">$unicode</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
              <span style="color: #000088;">$pos</span> <span style="color: #339933;">+=</span> <span style="color: #cc66cc;">4</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: #666666; font-style: italic;">// we have an escaped ascii character</span>
              <span style="color: #000088;">$hexVal</span> <span style="color: #339933;">=</span> <span style="color: #990000;">substr</span> <span style="color: #009900;">&#40;</span><span style="color: #000088;">$source</span><span style="color: #339933;">,</span> <span style="color: #000088;">$pos</span><span style="color: #339933;">,</span> <span style="color: #cc66cc;">2</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
              <span style="color: #000088;">$decodedStr</span> <span style="color: #339933;">.=</span> <span style="color: #990000;">chr</span> <span style="color: #009900;">&#40;</span><span style="color: #990000;">hexdec</span> <span style="color: #009900;">&#40;</span><span style="color: #000088;">$hexVal</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
              <span style="color: #000088;">$pos</span> <span style="color: #339933;">+=</span> <span style="color: #cc66cc;">2</span><span style="color: #339933;">;</span>
          <span style="color: #009900;">&#125;</span>
      <span style="color: #009900;">&#125;</span>
      <span style="color: #b1b100;">else</span> <span style="color: #009900;">&#123;</span>
          <span style="color: #000088;">$decodedStr</span> <span style="color: #339933;">.=</span> <span style="color: #000088;">$charAt</span><span style="color: #339933;">;</span>
          <span style="color: #000088;">$pos</span><span style="color: #339933;">++;</span>
      <span style="color: #009900;">&#125;</span>
  <span style="color: #009900;">&#125;</span>
&nbsp;
  <span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #000088;">$iconv_to</span> <span style="color: #339933;">!=</span> <span style="color: #0000ff;">&quot;UTF-8&quot;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
      <span style="color: #000088;">$decodedStr</span> <span style="color: #339933;">=</span> <span style="color: #990000;">iconv</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;UTF-8&quot;</span><span style="color: #339933;">,</span> <span style="color: #000088;">$iconv_to</span><span style="color: #339933;">,</span> <span style="color: #000088;">$decodedStr</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
  <span style="color: #009900;">&#125;</span>
&nbsp;
  <span style="color: #b1b100;">return</span> <span style="color: #000088;">$decodedStr</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #009933; font-style: italic;">/**
 * Function coverts number of utf char into that character.
 * Function taken from: http://sk2.php.net/manual/en/function.utf8-encode.php#49336
 *
 * @param int $num
 * @return utf8char
 */</span>
<span style="color: #000000; font-weight: bold;">function</span> code2utf<span style="color: #009900;">&#40;</span><span style="color: #000088;">$num</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
  <span style="color: #b1b100;">if</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$num</span><span style="color: #339933;">&amp;</span>lt<span style="color: #339933;">;</span><span style="color: #cc66cc;">128</span><span style="color: #009900;">&#41;</span><span style="color: #b1b100;">return</span> <span style="color: #990000;">chr</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$num</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: #000088;">$num</span><span style="color: #339933;">&amp;</span>lt<span style="color: #339933;">;</span><span style="color: #cc66cc;">2048</span><span style="color: #009900;">&#41;</span><span style="color: #b1b100;">return</span> <span style="color: #990000;">chr</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$num</span><span style="color: #339933;">&amp;</span>gt<span style="color: #339933;">;&amp;</span>gt<span style="color: #339933;">;</span><span style="color: #cc66cc;">6</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">+</span><span style="color: #cc66cc;">192</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">.</span><span style="color: #990000;">chr</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$num</span><span style="color: #339933;">&amp;</span>amp<span style="color: #339933;">;</span><span style="color: #cc66cc;">63</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">+</span><span style="color: #cc66cc;">128</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: #000088;">$num</span><span style="color: #339933;">&amp;</span>lt<span style="color: #339933;">;</span><span style="color: #cc66cc;">65536</span><span style="color: #009900;">&#41;</span><span style="color: #b1b100;">return</span> <span style="color: #990000;">chr</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$num</span><span style="color: #339933;">&amp;</span>gt<span style="color: #339933;">;&amp;</span>gt<span style="color: #339933;">;</span><span style="color: #cc66cc;">12</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">+</span><span style="color: #cc66cc;">224</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">.</span><span style="color: #990000;">chr</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$num</span><span style="color: #339933;">&amp;</span>gt<span style="color: #339933;">;&amp;</span>gt<span style="color: #339933;">;</span><span style="color: #cc66cc;">6</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">&amp;</span>amp<span style="color: #339933;">;</span><span style="color: #cc66cc;">63</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">+</span><span style="color: #cc66cc;">128</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">.</span><span style="color: #990000;">chr</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$num</span><span style="color: #339933;">&amp;</span>amp<span style="color: #339933;">;</span><span style="color: #cc66cc;">63</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">+</span><span style="color: #cc66cc;">128</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: #000088;">$num</span><span style="color: #339933;">&amp;</span>lt<span style="color: #339933;">;</span><span style="color: #cc66cc;">2097152</span><span style="color: #009900;">&#41;</span><span style="color: #b1b100;">return</span> <span style="color: #990000;">chr</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$num</span><span style="color: #339933;">&amp;</span>gt<span style="color: #339933;">;&amp;</span>gt<span style="color: #339933;">;</span><span style="color: #cc66cc;">18</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">+</span><span style="color: #cc66cc;">240</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">.</span><span style="color: #990000;">chr</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$num</span><span style="color: #339933;">&amp;</span>gt<span style="color: #339933;">;&amp;</span>gt<span style="color: #339933;">;</span><span style="color: #cc66cc;">12</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">&amp;</span>amp<span style="color: #339933;">;</span><span style="color: #cc66cc;">63</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">+</span><span style="color: #cc66cc;">128</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">.</span><span style="color: #990000;">chr</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$num</span><span style="color: #339933;">&amp;</span>gt<span style="color: #339933;">;&amp;</span>gt<span style="color: #339933;">;</span><span style="color: #cc66cc;">6</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">&amp;</span>amp<span style="color: #339933;">;</span><span style="color: #cc66cc;">63</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">+</span><span style="color: #cc66cc;">128</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">.</span><span style="color: #990000;">chr</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$num</span><span style="color: #339933;">&amp;</span>amp<span style="color: #339933;">;</span><span style="color: #cc66cc;">63</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">+</span><span style="color: #cc66cc;">128</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
  <span style="color: #b1b100;">return</span> <span style="color: #0000ff;">''</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span>
<span style="color: #000000; font-weight: bold;">?&gt;</span></pre></td></tr></table></div>

<p>で、せっかくこういうのを見つけてからアレなんだけれども、PHP を使っているんだったら Cookie に送信する文字列を PHP で事前にエンコードしておけば、Javascript 側で escape する必要がなくなり、結果的に PHP でデコードすることができるようになるので、こっちの方が手早いんではないかと思うのですが実際はどうなんでしょうか……。</p>
<h3>Javascript で後から追加する場合の注意点</h3>
<p>Javascript で追加すると確かに Cookie は送信されるけどページの再読み込みを行わないと Cookie が送信されたのか訪問者にはわかりません。なので、ページを再読み込みさせる必要があります。Javascript とかいろいろ何が正しいのかわかりませんが、私は Cookie の送信をしたと同時に Javascript の location.reload() でページを再読み込みさせることにしました。<br />
<a href="http://www.htmq.com/js/location_reload.shtml">location.reload()?JavaScriptリファレンス</a></p>
<p>こちらは Web サーバのデータからリロードされ、最新の状態に更新されます。</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
</pre></td><td class="code"><pre class="html4strict" style="font-family:monospace;"><span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">input</span> <span style="color: #000066;">type</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;button&quot;</span> <span style="color: #000066;">value</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;計算&quot;</span> <span style="color: #000066;">onclick</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;SetCookie('name','value');location.reload(true)&quot;</span> <span style="color: #66cc66;">/</span>&gt;</span></pre></td></tr></table></div>

<p>こちらはキャッシュからリロードされます。サーバー与える負荷を減らすためにはこちらがいいかもですね。</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
</pre></td><td class="code"><pre class="html4strict" style="font-family:monospace;"><span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">input</span> <span style="color: #000066;">type</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;button&quot;</span> <span style="color: #000066;">value</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;計算&quot;</span> <span style="color: #000066;">onclick</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;SetCookie('name','value');location.reload(false)&quot;</span> <span style="color: #66cc66;">/</span>&gt;</span></pre></td></tr></table></div>

<p>Cookie を追加すると同時にページをリロードさせ、Cookie をコンテンツに反映させてます。ちなみに onclick に複数の何かを挿入する場合はセミコロンで区切るらしいです。</p>
<h3>追記(2009/4/10): Ajax を使えばページを部分的にリロードして軽量化できる</h3>
<p>Cookie を反映させるためにページ全体を読み込むのはスマートじゃありません。あれからいろいろと勉強をして Ajax が使えるようになったので、やる気のある人は Ajax もついでに勉強してみてはどうでしょうか？<br />
<a href="http://kezy.org/ajax/ajax-site.html">Ajax でページの一部だけを部分的にリロードして軽量化したいのだが IE は未対応 | 空が好きな人のメモ帳</a></p>
<h3>Cookie を削除する</h3>
<p>クッキーの削除は簡単です。以下のページが丁寧でした。<br />
<a href="http://nyx.pu1.net/practice/cookie/cookie4.html">PHPスクリプト講座：クッキーの削除 &#8212; そふぃのphp入門</a></p>
<p>クッキーの削除の仕方は二通りあり、１つ目は setcookie() でクッキー名のみを指定する方法。</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
</pre></td><td class="code"><pre class="php" style="font-family:monospace;"><span style="color: #990000;">setcookie</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'クッキー名'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></td></tr></table></div>

<p>2つ目は、有効期限を過去にする。</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
</pre></td><td class="code"><pre class="php" style="font-family:monospace;"><span style="color: #990000;">setcookie</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'クッキー名'</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">''</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: #cc66cc;">1</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></td></tr></table></div>

<h3>Cookie には path がある</h3>
<p>とても複雑で意味が分からないんですが、これを完璧に検証してくれた人がいるみたいです。感謝！<br />
<a href="http://www.imymode.com/exp/cookie.html">Cookie(クッキー)の届く範囲 (あいまいモード)</a></p>
<p>ただ Javascript での path の指定の仕方がわかりかせんでしたが<a href="http://www.tohoho-web.com/wwwcook2.htm">とほほのCookie入門のテストページ</a>のソースにわかりやすくコメントアウトして記述してくれていましたのでなんとか解決。</p>
]]></content:encoded>
			<wfw:commentRss>http://kezy.org/2009/03/19/cookie/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
	<xhtml:link rel="alternate" media="handheld" type="text/html" href="http://kezy.org/2009/03/19/cookie" />
	</item>
	</channel>
</rss>
