Identificar se está dentro ou fora da rede com PHP (simples)

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.

Rolar para cima