2009-05-23 7 views
1

MVCIDという名前のCookieが設定されていて、その値は生成されたハッシュです。 私はこのクッキーが破壊されない理由は何でしょうか?

setcookie("MVCID","", time()-60*60*24); 

とページをロードを書くとき、クッキーの内容が消去されていないが、それはまた、死にかけていないだけではなく。

考えられる問題は何ですか?これは初めて起こっていません。

ps:これも他のコードがない空のページでこれを試していますが、これはまだ死ぬことはありません。

答えて

1

第4のパラメータとして「/」を使用してください。パス

+0

は、同じことを試してみました。私はセッションに行くつもりです。私はクッキーを嫌うようになっています。 –

+0

セッションがクッキーのような店舗であっても、よりうまくいくことを願っています。 –

+0

セッションは*クッキーと同じ方法で*保存されません。セッション記憶域はアプリケーションサーバー上で管理されます(PHPの場合、デフォルトは一時ファイルにありますが、データベース、メモリバックアップストアなどを使用するように変更できます)。セッション識別子を保持するために、それはセッションクッキー内にあります。しかし、セッションクッキーは、セッションが終了する(すなわち、ウィンドウが閉じる)または(期限が切れた後に)期限切れになるとブラウザによって明示的に削除されるという点で特別である。 – Rob

0

のHTMLを出力する前にこの関数を呼び出していますか?クッキーはHTTPヘッダーに表示されなければならないので、これは既知の呼び出しです。

また、クライアント側で時刻を確認することもできます。 1日前に期限切れに設定していても、(時間が正しく設定されていないと)クロックのスキューが大きくなる可能性があります。

そして、多くのことに基づいて変更することができるデフォルトに頼るのではなく、すべてというパラメータを設定することをお勧めします。

加えて、私はそれが失敗する可能性がどのようには考えているが、リターンコードを確認したいことがあり、何かのように:あなたがで何が起こっているのを見てする必要があり、それに失敗

<?php 
    $ret = setcookie("MVCID","", time()-60*60*24); 
?> 
<html> 
    <head></head> 
    <body> 
     Hello<br> 
     <pre> 
      <?php 
       print_r ($ret); 
      ?> 
     </pre> 
    </body> 
</html> 

ワイヤレベル。つまり、HTTPレスポンスを調べてHTTPヘッダーにSet-Cookieがあることを確認し、それとともに渡される実際の値を調べます。

最後に、試してみてください:クッキーを完全に削除し、ブラウザから終了してください(メモリの中にキャッシュされているものもあります)。その後、もう一度試してください。 PHPのsetcookieが動作していない場合、クッキーは作成されません。あなたが変更または期限切れになっていないものは、以前成功したコードの変種から残されます。

+0

nope no html。しかし、うーん、私は笑を試してみましょう。 –

+0

私はちょうどいくつかのHTMLを渡し、何も、まだそこに。 –

0

使用firebugfiddlerのようなものを実際のレスポンスヘッダ(両方とも、「本当の」クッキーと「削除」クッキーを含むものを含むもの)を検討する