PHP IPv6和IPv4解决对网页的特定访问

时间:2017-11-15 12:04:29

标签: php ip ipv6 access ipv4

我想限制对未连接到特定公司的某个WIFI的用户的访问权限。 例如,我们有一家公司,这家公司有2个不同的WIFI网络可以连接。如果客户端通过其中一个WIFI连接,我只想访问一个页面。

  • 其中一个WIFI的IPv4就是:123.45.65.101
  • 其他WIFI的IPv6例如: 2000:980:CE5:1:4dd9:47ad:ff9b:4454

以下PHP脚本在没有IPv4地址的情况下完美运行:

if(!in_array($_SERVER['REMOTE_ADDR'], $ip_adres_allow) && !in_array($_SERVER["HTTP_X_FORWARDED_FOR"], $ip_adres_allow)) {

    die("You can't access this webpage, please try again by your employee.");

    exit();
}

$ ip_adres_allow - >存储在数据库中的值数组

我的问题是:

  • 我知道每个WIFI的IPv4地址是相同的,它们不会改变。但是IPv6地址是一样的吗?我已经跟踪了公司的一些IPv6地址,他们似乎从2000:980开始:ce5:1:XXXX:XXXX:XXXX:XXXX。 (而X的不一样)这是否意味着WIFI有一系列的IPv6?

    • 2000:980:ce5:1:4dd9:47ad:ff9b:4454与2000:980:ce5:1:55de:de7d:df6e:ea62相同的WIFI?或者这是否确定它是另一个WIFI网络?
  • 有没有办法修改上面的PHP脚本来检查客户端是否连接到其中一个WIFI?或者这个脚本是否仍然有效?因为数据库是使用IPv6和IPv4地址进行硬编码的。如果IPv6是一个地址,可能有人连接到WIFI但无法访问该页面,因为它与数据库中的值不完全匹配。

如果我错了,请纠正我。

感谢阅读。

1 个答案:

答案 0 :(得分:-1)

正如我们在聊天中所讨论的,下面是一个示例代码,可让您了解如何执行检查。

$checkip  = $_SERVER['Something with IP'];
$validate = '';

if($checkip == $_SERVER['Some IPv4'])
{
    $ip = the IPv4 address
    $validate = 4; 
}
else
{
    $ip = the ipv6 IP 
    $validate = 6; 
}

if($validate == 4)
{
    $ip = echo substr($ip, 0, ???); // IPv4 address
}
else
{
    $ip = substr($ip, 0, 15); // 2000:950:ac2:3 
}

再说一遍:这只是为了给你一个想法。您需要创建自己的函数才能正确使用它。我建议在登录时将其设为函数,并为函数提供变量。因此,您不必修改其他公司的脚本,只需修改您发送的变量。 (函数可以简单地返回truefalse;

祝你好运!