PHPでcookieの操作
Posted by Koumei on 7月 30, 2010 in webプログラミング |
cookieの操作は基本だが、意外と使いづらい。
それはPHPの仕様(というかバグ)のせいだと思う。
PHPでのcookie出力は他のヘッダ出力前でなければならない。
まあ、それは仕方ないとして、ヘッダを出力していないのにエラーになることがある。
どういうときかというと、日本語がコメントでも何でも存在した後はダメなのだ。
ヘッダではないコメントでアウトなのだから、バグだと思う。(最新のPHPは分からないが)
コメントを英語にするか取り去ると通るのだから意地悪だ。
どこにcookie出力を書いてもいいようにするには他の手を考えなければならない。
コメントに日本語を使いたいし、処理の中で、先頭以外でcookie処理をしたいことだってあるのだから。
どうするかというと、PHPからcookieを書かせない。
Javascriptを使うのである。
それなら、ロード完了時にJavascriptで書き込めるので、PHPの最後に処理しても問題ない。
PHP側
$wkCookie="document.cookie = 'キー名称 = 値;expires=継続時間;";
$smarty->assign('Cookie',$wkCookie);
テンプレート側
{if $Cookie!=""}
{/if}
ちなみに、受け取りはもっと簡単である。
PHP側 $cookie=$_COOKIE["キー名称"];