[PHP-users 12167] Re: ショッピングカートでクッキーを使いたいのですが、うまく設定できません。
Toshiyuki Kajii
php-users@php.gr.jp
Wed, 11 Dec 2002 05:15:15 +0900
梶井です。
* Wed, 11 Dec 2002 04:46:19 +0900
* shogo <sho@drive.co.jp> wrote:
>setcookieを発行した時点では
>$cookie[$key]
>なる変数は作成されません。
大溝さんのソースでは$_POST['item']とありますから、register_globalsに
ついてはご存知と思われるので、どちらかというとドキュメントの不備とい
うか、誤解というかだと思います。
http://jp.php.net/manual/ja/function.setcookie.php
if (isset ($cookie)) {
while (list ($name, $value) = each ($cookie)) {
echo "$name == $value<br>\n";
}
}
この記述だと、大溝さんの書き方になってしまうのもうなずけるかなと...
>> $item = $_POST['item'];
>> while ( list ( $key, $value ) = each ( $item ) ) {
>> setcookie("cookie[$key]",$value);
>> print "{'$cookie[$key]'}";
>> }
ただ、いずれにせよループでcookieを発行しながらprintで表示というのは
「クッキーは他のヘッダーを送信する前に送信される必要があります。」
とあるように、無理です。なので、
$item = $_POST['item'];
while ( list ( $key, $value ) = each ( $item ) ) {
setcookie("cookie[$key]",$value);
}
$cookie = $_COOKIE["cookie"]; ←ここ
while( list ( $key, $value ) = each ( $cookie ) ) {
print "{'$cookie[$key]'}";
}
こんな感じでしょうか。ただ、
>また、ややこしくなると思うのでCookieの発行は
> setcookie("item[$key]", $value);
>とした方がいいんではないでしょうか。(余計なお世話かも(^^;
これは同感^^;
*---------------------------------------------------*
Toshiyuki Kajii 梶井 俊幸
e-mail: mikoto@camino.nissan.ne.jp
*---------------------------------------------------*