2

だから私はphpにかなり慣れていませんが、本当にしっかりと理解する前に、この習慣を身につけました。$_SESSION//変数が設定されているかどうかを確認するときは、これを使用し$_POSTます。$_GET

if($_SESSION['username'] != '' {
 //allow access
 header('Location: welcomefriend.php')
}
else {
 //get out
 header('Location: getoutofhereyournotwelcome.php')
}

issetセッションがアクセスを許可するように設定されているかどうかなどを確認するために、ログイン スクリプトでこれを使用しました。これで、 /についてはわかりましemptyたが、常に問題が発生するようです。

私の質問はif($some_far != '')、変数が設定されているかどうかを確認するために使用するときに問題が発生することはありますか?

4

7 に答える 7

2

はい - インデックスが配列に存在しない場合、通知がスローされます。

于 2013-01-16T06:32:14.000 に答える
2

変数が存在しない場合は通知が表示されるので、次のようにします。

if( !empty($_SESSION["username"]) ) {
...
于 2013-01-16T06:34:16.480 に答える
0

はい、フォームが送信されても​​記入されていない$_POST["value"]==""場合、 とは異なる結果が得られますisset($_POST["value"])。また、$_POST["value"]==""設定されていない場合、一部のサーバーでエラーが発生します。

于 2013-01-16T06:31:46.180 に答える
0

配列に実際にエントリがあるかどうかを確認$_SESSION['username']せずに空かどうかを確認すると、通知がスローされます。それらの周りにコーディングすることをお勧めします。これを行う1つの方法は次のようなものですusername$_SESSIONif (isset($_SESSION['username']) && $_SESSION['username'] != '')

empty()vsに関して!= ""は、それは個人的な好みです。遭遇する可能性のある問題の 1 つはempty()、値を受け入れず、参照のみを受け入れないため、empty(somefunction($_SESSION['username'])).

于 2013-01-16T06:34:19.100 に答える
0

empty() を使用if( !empty( $some_far ) ) {して、$_POST 変数が設定されていて空でないかどうかを確認します。

変数を空にすることもできますが、設定する必要がある場合は、 isset() を使用if( isset( $some_far ) ) {
true を返すために変数を NULL にすることもできません。

変数が設定されていない場合も通知はありません。

于 2013-01-16T06:35:48.050 に答える
0

私は常に次のことを行います。

if (isset($_SESSION['username']) && $_SESSION['username'] != '') {
  //allow access
  header('Location: welcomefriend.php')
}
else {
  //get out
  header('Location: getoutofhereyournotwelcome.php')
}

'username'if ステートメントで最初にインデックスが変数に存在するかどうかをテストすると、インデックスが存在$_SESSIONしない場合は続行されない$_SESSION['username'] != ''ため、エラーが発生することはありません。

于 2013-01-16T06:36:03.183 に答える
0

検討中

現在のスクリプトで使用できるセッション変数を含む連想配列

利用可能な定義済み関数を使用してみませんか?array_key_exists

if(array_key_exists('username', $_SESSION) ) {
   header('Location: welcomefriend.php');
} else {
   header('Location: getoutofhereyournotwelcome.php');
}
于 2013-08-21T17:18:12.000 に答える