/ / PHP Endereços IPv6 e IPv4 acesso específico à página da Web - php, ip, ipv6, acesso, ipv4

Endereços PHP IPv6 e IPv4 acesso específico à página da Web - php, ip, ipv6, acesso, ipv4

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 № 1

Como 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!