我正在使用的计算机的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
也许可以尝试使用相同的比较操作符,如!==或===