5

我正在努力加强我的会话并找到下面的代码。我的问题是这条线isset($_SESSION['last_ip']) !== $_SERVER['REMOTE_ADDR']

当我回显比较时,IP 编号是相同的,但那行代码将两者进行比较是不同的。如果我比较它,!=那么比较有效。这是为什么?两个值不应该完全相同吗?有什么建议可以解决===吗?

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'] ) {

您正在检查是否设置了一个,而另一个与该布尔值匹配。删除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 回答