プロが教える店舗&オフィスのセキュリティ対策術

PHP5にて以下のようにクッキーを連想配列でセットしています。

setcookie("cookie[1]", "10", time()+600);
setcookie("cookie[2]", "20", time()+600);
setcookie("cookie[10]", "100", time()+600);

この場合、一部のクッキー(例えばcookie[2]で設定したもの)
だけを削除するにはどうすれば宜しいのでしょうか?
試しに以下の様に記述してみましたが、上手く削除されませんでした。
setcookie("cookie[2]");

また、全てのクッキー(全ての連想配列)を
いっぺんに削除する方法もありましたら、お教えください。

宜しくお願いします。

A 回答 (4件)

見当違いなことを言ってしまっていたら、ごめんなさい。



cookie[2] というのは、$cookie[2] ということでしょうか?

もしくは、$_COOKIE[2] でしょうか。

cookie[2]

こういうものを私は見たことがないので、
もし、これで正しい場合には、これが何かを逆に教えて下さい…。
すみません^^;

この回答への補足

cookie[2]で正しいと思います。
クッキーを配列でセットしているものだと思います。
下記URLを参考にしました。
http://d.hatena.ne.jp/ten-you/20090504/1241437098

補足日時:2009/09/08 21:51
    • good
    • 0

回答、どうもありがとうございます。



仰る通り、正しい記述でした。
変なことを言ってすみませんでした。^^;

で、ちょっと分かったことなのですが、

setcookie("cookie[2]"); は、

setcookie("2"); で、おそらく、希望通り処理されると思います。

また、変なことを言っていたらごめんなさい。
    • good
    • 0
この回答へのお礼

march4さん、ご回答ありがとうございます。

setcookie("2");
では削除されませんでした。

お礼日時:2009/09/08 23:22

setcookie('cookie[2]', '', time()-42000);



有効期限を現在時刻より以前にしてしまえば、削除されます。
    • good
    • 0
この回答へのお礼

ご回答ありがとうございました。

しかし、やはり削除されませんでした・・・
サーバーの関係とかあるのでしょうか?

テスト用として以下の3スクリプトで試しております。

/* setck.php */
<?php
setcookie("cookie[2]", "20");
setcookie("cookie[3]", "30");
setcookie("cookie[10]", "100");
echo "クッキーをセット<br>\n";
?>

/* getck.php */
<?php
if (isset($_COOKIE['cookie'])) {
foreach ($_COOKIE['cookie'] as $name => $value) {
echo "Cookie番号[$name] : $value <br />\n";
}
}
?>

/* delck.php */
<?php
setcookie( "cookie[3]", "", time() - 42000 );
echo "cookie番号[3]を削除<br>\n";
?>

実行結果
setck.phpを実行

クッキーをセット

getck.phpを実行

Cookie番号[2] : 20
Cookie番号[10] : 100
Cookie番号[3] : 30

delck.phpを実行

クッキー番号[3]を削除

getck.phpを実行 (ここでCookie番号[3]が消えていて欲しかった)

Cookie番号[2] : 20
Cookie番号[10] : 100
Cookie番号[3] : 30

以上です。宜しくお願いします。

お礼日時:2009/09/09 02:14

こんにちは。


私の環境で試したところ削除されていました。

各URLへ遷移後にctrlキー+F5等で更新してみましたか。

キャッシュの関係かもしれません。
各URLで一度更新を実行した場合は正しく動いていましたがただアクセスしただけだと画面上セットされていなかったり削除されていなかったりしました。
    • good
    • 0
この回答へのお礼

F5で更新したところ、削除されていました。
キャッシュが残っていたもようです。
ご回答ありがとうございました。

お礼日時:2009/09/09 13:07

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!