2011-07-27 13 views
1

test.phpを私はクッキー未設定のクッキー取得未定義のインデックス

お知らせ設定を解除した後に取得しています

<?php 
setcookie('username', 'mary', time()+1000); 


setcookie('username', 'mary', time()-1000); 


?> 

view.php

<?php 
echo $_COOKIE['username']; 


?> 

エラー:未定義のインデックス:Cでのユーザ名:\ユーザー\

+3

あなたが取得する必要がある何が、そうではありませんか?結局のところ、あなたはそれを打ち立てています。 [?](http://www.ideone.com/MOdZo) –

答えて

2

クッキーを定義するのは、すぐに設定を解除することだけです。負の時間でsetcookie上のユーザ名を呼び出すと、(そのため、クッキーのスーパーグローバルでのインデックスはなくなったので、未定義のエラー)essentially calling unset($_COOKIE['username'])です。

私はexpected behaviorこれを呼び出します。

0

ライン3上の離散数学\ xamppの\ htdocsに\ view.php \ジョー\ドキュメント設定解除クッキー、それは変数のようなものです、それはもはや存在しません。 はリストです。

$a = 1; 
$a = null; 

print $a; 
-1

I'ldは、設計どおりに動作する、と言います。警告、使用のこれらの種類無効にするには:

ini_set('display_errors', 0); 

それとも

ini_set('display_errors', 1); 
error_reporting(E_ALL ~ E_WARN); // or some other (combination of) flag(s). 
+1

これは本当に悪い解決策です。エラーを避けるか、良いコードを生成することを学ぶべきです。これはちょうど偽装です – worenga

+0

合意。彼らが致命的な誤りではないという理由だけで、彼らは抑圧されていないままでなければならないという意味ではありません。 –

+0

Timの防衛では、配列インデックスが定義されているかどうかを確認する必要がありますが、ライブサーバーでは、エラー、警告、または通知を表示しないことをお勧めします。エラーを(特に@で)抑止するのは必ずしも良いことではありませんが、ライブボックスではうまくいっています。 –

0

クッキーの設定を解除する場合は、クッキーがなくなっているが、そのための$ _COOKIE配列は文句を言わないもうそれで、この特定のCookieのキーを持っています。

あなたが実際にキーを使用する前に、キーが存在するwheterチェックすることをお勧めします。 この機能を使用するには、関数array_key_exists(http://php.net/array_key_exists

0

setcookie()が必ずしも特定の値に設定されているわけではありません。これは単に、PHPに、UserAgentに送り返されたCookiesヘッダー内のそのCookieエントリを更新するように指示します。エージェントは、有効期限(最後のパラメータはsetcookie())が経過したことを確認すると、クッキーが期限切れになっているとみなし、それを削除します。 Ergo、クッキーは削除されます。配列から無効なキーにアクセスしようとすると、PHPで常に通知が生成されます。 isset()で修正できるはずですが、プロダクションボックスでエラー/警告/通知を非表示にしたり、プライベートファイルに記録したりするだけです。

関連する問題