Em PHP, você pode verificar se um cliente está em uma rede interna ou externa com base em seu endereço IP. Para fazer isso, você pode obter o endereço IP do cliente usando a variável global $_SERVER['REMOTE_ADDR']
e, em seguida, compará-lo com uma lista de intervalos de endereços IP que representam sua rede interna. Se o endereço IP do cliente estiver dentro desses intervalos, você pode concluir que ele está em uma rede interna.
Aqui está um exemplo de como você pode fazer isso:
<?php
// Lista de intervalos de endereços IP que representam a rede interna
$internalIpRanges = [
'192.168.0.0/16',
'10.0.0.0/8',
// Adicione outros intervalos de IP da sua rede interna, se necessário
];
// Função para verificar se um endereço IP está dentro de um intervalo de IP
function isIpInRange($ip, $range) {
list($subnet, $mask) = explode('/', $range);
$subnet = ip2long($subnet);
$ip = ip2long($ip);
$mask = -1 << (32 - $mask);
return ($ip & $mask) == ($subnet & $mask);
}
// Obtenha o endereço IP do cliente
$clientIp = $_SERVER['REMOTE_ADDR'];
// Verifique se o cliente está na rede interna
$inInternalNetwork = false;
foreach ($internalIpRanges as $range) {
if (isIpInRange($clientIp, $range)) {
$inInternalNetwork = true;
break;
}
}
if ($inInternalNetwork) {
echo "Você está na rede interna.";
} else {
echo "Você está na rede externa.";
}
?>
Neste exemplo, você precisa definir a lista de intervalos de endereços IP que representam sua rede interna na matriz $internalIpRanges
. O código verificará se o endereço IP do cliente está em algum desses intervalos e informará se ele está na rede interna ou externa. Certifique-se de adicionar todos os intervalos de IP relevantes para sua rede interna na lista.