5

セッションを強化しようとしていますが、以下のコードが見つかりました。私の質問はこの行isset($_SESSION['last_ip']) !== $_SERVER['REMOTE_ADDR']です。

比較をエコーアウトすると、IP番号は同じですが、そのコード行は2つを異なるものとして比較します。私がそれを比較すると!=、比較は機能します。何故ですか?両方の値が完全に同一であるべきではありませんか?どうすれば修正できるの===でしょうか?

ini_set('session.cookie_httponly', true);
session_start();
if ( isset($_SESSION['last_ip']) === false ) {
    $_SESSION['last_ip'] = $_SERVER['REMOTE_ADDR'];
}
if ( isset($_SESSION['last_ip']) !== $_SERVER['REMOTE_ADDR'] ) {
    echo $_SESSION['last_ip'] . ' / ' . $_SERVER['REMOTE_ADDR']; // the output is identical
}
4

2 に答える 2

11
if ( isset($_SESSION['last_ip']) !== $_SERVER['REMOTE_ADDR'] ) {

1つが設定されており、もう1つがそのブール値と一致するかどうかを確認しています。を削除しissetます。

于 2012-12-19T01:20:16.850 に答える
2

個人的には、次のような IF シーケンスで AND 演算子を使用してこれを解決します。

if ( isset($_SESSION['last_ip']) && $_SESSIOn['last_ip'] != $_SERVER['REMOTE_ADDR'] ) {

これは役に立ちますか?

于 2012-12-19T01:32:16.547 に答える