Saber se acesso a aplicação web é feito pela rede interna ou externa
Script que contém uma função que retorna se o usuário acessa a sua aplicação web de modo interno ou externo a rede.
Descrição
Script que contém uma função que retorna se o usuário acessa a sua aplicação web de modo interno ou externo a rede.
<?php
function ConfereIPExtInt(){
$ip_server = $_SERVER['SERVER_ADDR'];
$ip_remoto = $_SERVER['REMOTE_ADDR'];
$array_ip_server = explode(".",$ip_server);
$array_ip_remoto = explode(".",$ip_remoto);
if (($array_ip_server[0] == $array_ip_remoto[0]) || ($array_ip_server[1] == $array_ip_remoto[1])){
return 0; //ip interno
}else{
return 1; //ip externo
}
}
//exemplo de uso da função
$var = ConfereIPExtInt();
if ($var == 0){
echo "Acesso Interno!";
}else{
echo "Acesso Externo!";
}
?>
Para fazer isto o if teria que ser um && (AND) e não um || (OR). Como está ele irá dizer que 10.20.30.4 é da mesma rede que 200.20.3.4!!!!
Ainda teria tantas outras coisas a considerar, pois compara o primeiro e o segundo octeto não é garantia de ser da mesma rede! Sem falar que não testas o HTTP_X_FORWARDED_FOR que tem o IP privado em caso de proxy.
O script está errado (devia ser um &&) e mesmo se estiver certo, não faz o que se propõe. Para ver se é da rede interna teria que se ter a máscara de rede do servidor.