Quero restringir o acesso a usuários que não sãoconectado a um dos WIFI's de uma empresa específica. Por exemplo, temos uma empresa e essa empresa tem duas redes WIFI diferentes para se conectar. Eu quero apenas dar acesso a uma página se o cliente estiver conectado por um desses WIFI "s.
- O IPv4 de um dos WIFI's é, por exemplo: 123.45.65.101
- O IPv6 do outro WIFI é, por exemplo: 2000: 980: ce5: 1: 4dd9: 47ad: ff9b: 4454
O seguinte script PHP funcionou perfeitamente no tempo, havia apenas um endereço 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();
}
Onde $ ip_adres_allow -> matriz de valores armazenados no banco de dados
Minhas perguntas são:
Eu sei endereços IPv4 são os mesmos por WIFI, elesnão vai mudar. Mas o endereço IPv6 é o mesmo? Eu tenho acompanhado alguns endereços IPv6 da empresa e eles parecem começar com 2000: 980: ce5: 1: XXXX: XXXX: XXXX: XXXX (enquanto os X's não são os mesmos) Isso significa um WIFI tem um intervalo de IPv6?
- É 2000: 980: ce5: 1: 4dd9: 47ad: ff9b: 4454 o mesmo WIFI de 2000: 980: ce5: 1: 55de: de7d: df6e: ea62 por exemplo? Ou é definitivamente certo que é outra rede Wi-Fi?
Existe uma maneira de modificar o script PHP acima paraverificar se um cliente está conectado a um dos WIFI "s? Ou este script ainda funciona? Porque o banco de dados é hardcoded com endereços IPv6 e IPv4. E se o IPv6 é um endereço, pode haver alguém que está conectado ao WIFI mas não pode acessar a página porque não é uma correspondência exata do valor no banco de dados.
Por favor me corrija se eu estiver errado.
Obrigado pela leitura.
Respostas:
-1 para resposta № 1Como discutimos em nosso bate-papo, abaixo está um exemplo de código para você ter uma ideia de como realizar seus cheques:
$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
}
Mais uma vez: isto é apenas para lhe dar uma ideia. Você precisa criar sua própria função para usar isso corretamente. Eu sugiro fazer isso uma função no login e dar variáveis à sua função. Então você não precisa modificar seu script para outras empresas, apenas as variáveis que você está enviando. (função poderia simplesmente retornar true
ou false
;
Boa sorte rapaz!