1

そのため、現在のセッションに対してセッション IP をチェックしています。私は自分の答えがあるかもしれない質問を見てきましたが、どれもありません。

接続するたびに、「あなたの IP が一致しません...」というメッセージが表示されます。

<?php
if (isset($_SESSION['ip']) and (strcmp($_SESSION['ip'], md5($_SERVER['REMOTE_ADDR'])))){
    echo "Your IP doesn't match your session, your IP: ". $_SERVER['REMOTE_ADDR'] ." and your session IP: ". $_SESSION['ip']. ". <a href='/scripts/signout.php'>Click here to log out.</a>";
    die;
}
?>

私は HTTPX を使用することを知っており、これを修正した後に実装します。また、$_SESSION['ip'] は md5(現在の IP) です。

4

2 に答える 2

2

セッションIPとIPアドレスのmd5を比較しているので、おそらく必要です:

<?php
if (isset($_SESSION['ip']) and ((strcmp($_SESSION['ip'], $_SERVER['REMOTE_ADDR']) !== false))){
    echo "Your IP doesn't match your session, your IP: ". $_SERVER['REMOTE_ADDR'] ." and your session IP: ". $_SESSION['ip']. ". <a href='/scripts/signout.php'>Click here to log out.</a>";
    die;
}
?>
于 2013-10-12T11:56:15.180 に答える
1

文字列が一致する場合、 strcmpは 0 を返します。また、php では false に等しいため、md5 呼び出しは実際には必要ありません。

<?php
if (isset($_SESSION['ip']) && strcmp($_SESSION['ip'], $_SERVER['REMOTE_ADDR']) !== 0){
    echo "Your IP doesn't match your session, your IP: ". $_SERVER['REMOTE_ADDR'] ." and your session IP: ". $_SESSION['ip']. ". <a href='/scripts/signout.php'>Click here to log out.</a>";
    die;
}
//or you can just go 

if(isset($_SESSION['ip']) && $_SESSION['ip'] !== $_SERVER['REMOTE_ADDR']) {
/// stuff
}
于 2013-10-12T11:58:48.173 に答える