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

时间:2014-06-24 19:16:42

标签: php if-statement ip-address

我使用的计算机的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>";
}
?>

2 个答案:

答案 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)

也许尝试使用相同的比较运算符,例如!== ===