0

私の理解では、便利な を提供する javascript とは対照的に、存在しなくif (var) {}ても、PHP では、またはを使用する必要があります。varif (isset(var)) {}if (isset(var) && var) {}

今日、信頼できる情報源からのものと思われるログイン チュートリアルを見つけましたissetが、使用されていません。

if(!$_SESSION['id']):

[リンク先ページより、demo.php セクション、15 行目]

私のローカルサーバーでは、が設定されていない場合、この行が壊れ$_SESSION['id']ます。これは、予想される動作です。$_SESSION['id']この行より前に定義されていません。

迷惑なisset()チェックを回避する不思議な方法はありますか?

4

2 に答える 2

6

あなたのアプリケーションは「壊れる」ことはありません。なぜなら、それは単なる通知であり、そうです:配列キーが存在するかどうか不明な場合は、配列キーの存在を常にテストする必要があります。

$defaults = array('id' => null);
$session = array_merge($defaults, $_SESSION);

$session に key があることを確認できますid

ただし、警告と通知を抑制することができます@

if (!@$_SESSION['id']) { /* .. */ }

しかし、通常、キーに触れた場合@:

  • あなたには本当に正当な理由があります
  • あなたは何か間違ったことをしました:)

@クリーンなアプリケーションでは、ごくまれにしか必要ありません。

最後に一言:検証せずに外部からの値を使用しないでください!

于 2013-02-10T22:29:45.090 に答える
2

if(!$_SESSION['id'])セッション変数が空白かどうかを確認するだけです。issetかどうかをチェックしますNULL。個人的empty()には一途です。以下をチェックします。

  • "" (空の文字列)
  • 0 (整数としての 0)
  • 0.0 (浮動小数点として 0)
  • "0" (文字列としての 0)
  • ヌル
  • 間違い
  • array() (空の配列)
  • $var; (変数は宣言されていますが、値はありません)
于 2013-02-10T22:30:28.387 に答える