检查会话 IP 是否与当前 IP - PHP 匹配


Check if session IP matches current IP - PHP

所以我正在根据当前会话检查会话 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(

您正在比较会话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;
}
?>

>如果字符串匹配,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
}