我使用的计算机的IP地址是$ ip中指定的IP地址。问题是,当$ userip != $ ip时,会显示消息,但不应显示该消息。理想情况下,if语句的第一个版本是我希望页面如何工作的。有什么想法/建议吗?提前谢谢。
注意:if语句的目的是确保用户从特定计算机访问该站点。例如,员工只能从他们的工作站计算机(而不是PC)访问该站点。如果他们不在工作站计算机上,则会显示该消息。
注意:我从运行“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>";
}
?>
答案 0 :(得分:1)
我刚测试了上面的代码,它在我创建的页面上工作得很好。
我唯一建议的是做
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地址,您可以通过以下几种方式执行此操作:
答案 1 :(得分:0)
也许尝试使用相同的比较运算符,例如!== 或 === ?