最近セッションの問題を調べていて、ユーザーがログインしているかどうかを判断する必要がありました。次の 2 つの方法でユーザーがログインしているかどうかを正常に判断できることがわかりました。
コードは次のとおりです:
質問: 2 番目の判定ステートメントで、$_SESSION['uname'] の代わりに $_SESSION のみを記述した場合、最初の方法を使用すると、後の括弧内が $_SESSION['uname] であるかどうかにかかわらず、エラーが報告されます。 empty '] や $_SESSION は問題ありませんが、理由は何ですか? 2 つの方法のうちどちらが優れていますか?それとも安全ですか?ありがとうございます
最近セッションの問題を調べていて、ユーザーがログインしているかどうかを判断する必要がありました。次の 2 つの方法でユーザーがログインしているかどうかを正常に判断できることがわかりました。
コードは次のとおりです:
質問: 2 番目の判定ステートメントで、$_SESSION['uname'] の代わりに $_SESSION のみを記述した場合、最初の方法を使用すると、後の括弧内が $_SESSION['uname] であるかどうかにかかわらず、エラーが報告されます。 empty '] や $_SESSION は問題ありませんが、理由は何ですか? 2 つの方法のうちどちらが優れていますか?それとも安全ですか?ありがとうございます
2番目の使用をお勧めします。 2 番目のコードを正しく使用するという前提の下では、コードはより厳密になります。
empty は空かどうか、isset は変数が存在するかどうかです。
セッション関数 session_start(); を有効にしている限り、配列変数 $_SESSION が存在します。
ただし、ログインしていない場合、$_SESSION は単なる空の配列になります。ログインしている場合にのみ、
$_SESSION['uname'] などのデータが $_SESSION に書き込まれます。
$_SESSION を書き込むだけでエラーが報告される 2 番目の理由は、まだログインしていないため、$_SESSION['uname'] は存在しないが、$_SESSION が空の配列として存在することです。
empty は、パラメーターが空であると見なされるかどうかを決定します。パラメータが存在してもその値が false の場合でも、パラメータは空とみなされます。
if(isset($_SESSION['uname']) && !empty($_SESSION['uname'])){//それはいいですね
}
isset と empty の違い: empty() と isset() の処理オブジェクトは、未定義の変数、0、および空の文字列にすぎません。
リーリー