根据不工作的IP地址将用户重定向到页面


Redirect user to page depending on IP address not working

我正在使用的计算机的IP地址是在$ IP中指定的那个。问题是,当$userip != $ip,则显示不应该显示的消息。if语句的第一个版本是我希望页面工作的理想方式。意见/建议吗?提前谢谢。

注意:if语句的目的是确保用户从特定的计算机访问站点。例如,员工只能从他们的工作站计算机(不能从个人电脑)访问站点。

注意:我从运行"ipconfig/a"ll命令中获得$ip

注意:我目前正在使用一个IP地址进行测试,我最终将使用多个IP地址进行测试。

$userip = ($_SERVER['REMOTE_ADDR']); 
$ip = '172.34.56.202';
if ($userip != $ip) {
    echo "<h3>" . "ACCESS DENIED. Your IP address is not in the list of allowed IPs" . "</h3>";
} else{
    $URL="http://www.yahoo.com";
    header ("Location: $URL");
}
?>

我也试图在这个版本中改变if语句的操作,但它仍然不起作用,错误信息仍然显示,而不是将用户引导到另一个页面:

<?php
error_reporting(E_ALL);
$userip = ($_SERVER['REMOTE_ADDR']); 
$ip = '172.34.56.202';
if ($userip == $ip) {
    $URL="http://wt-ws.delta.lasalle.edu/tempProject/timeSheetProject/TimeSheet.php";
    header ("Location: $URL");
} else{
    echo "<h3>" . "ACCESS DENIED. Your IP address is not in the list of allowed IPs" . "</h3>";
}
?>

我刚刚测试了上面的代码,它在我创建的页面上运行得很好。

我唯一的建议就是做

echo($userip); 

查看$userip的值。如果您在安装在您机器上的测试盒上执行此操作,那么您的IP很可能是127.0.0.1,因为您是在本地查看文件。

回复你更新的问题当您使用ipconfig /a时,它会给您分配给您的机器的IP地址。大多数网络使用子网掩码和私有IP地址。例如,如果您使用ipconfig /a并在以下范围内获得IP地址,它是一个私有的不可路由的IP地址。

10.0.0.0 - 10.255.255.255 - Class A
172.16.0.0 - 172.31.255.255 - Class B
192.168.0.0 - 192.168.255.255 - Class C

找到你的公共IP地址,你可以这样做:

    你可以谷歌我的ip是什么?
  • www.ipchicken.com
  • www.whatismyip.com

也许可以尝试使用相同的比较操作符,如!=====