Saludos, hace un año arme algo similar para un Chat en donde solo le permitía la entrada a una región especifica.. y lo lograba leyendo las IPS de la "conexión cliente".-
 
Te lo pegare aquí no lo e probado nuevamente, pero debería de funcionarte, ya que actualmente ese Script esta corriendo y no a dado fallos.-  
 Código PHP:
    <?php
/*------------------------------------------------------
| POR LEUGIM,CA (VERIFICADOR DE IPS PARA CHAT-ARAGUA)
-------------------------------------------------------*/
 
function Regionalista($YOLinea_Aragua) {
 
$Ips_Oks = array("NumeroIps1","NumeroIps2","NumeroIps3");
                        
$maracayeros = count($Ips_Oks);
trim($YOLinea_Aragua);
strip_tags($YOLinea_Aragua);
    for ($i=0; $i < $maracayeros; $i++)
    {
        if (ereg($Ips_Oks[$i], $YOLinea_Aragua)) {
            return false;
        }
    }    
    for ($i=0; $i < $maracayeros; $i++)
    {
        if (ereg($Ips_Oks[$i], $YOLinea_Aragua)) {
        return false;
        }
    }
    $YOLinea_Aragua = eregi_replace("[^a-z]+", "", $YOLinea_Aragua);
    for ($i=0; $i < $maracayeros; $i++)
    {
        if (ereg($Ips_Oks[$i], $YOLinea_Aragua)) {
        return false;
        }
    }
    for ($i=0; $i < $maracayeros; $i++)
    {
        if (ereg($Ips_Oks[$i], $YOLinea_Aragua)) {
        return false;
        }
    }    
    
    return true;
}
//---------------------------------------
// EFECTOS ------------------------------
//---------------------------------------
 
 if (!Regionalista($ips)){
  $ok "Bienvenidos te estas conectando desde Nuestro estado Aragua";
  //echo "Ips de nuestra tierra natal";
    return FALSE;
    }
else{
  $ok "El Chat no esta disponible en estos momentos, intente mas talde";
  }
?>    
   Código PHP:
    <?php
$ips //ips del cliente
$Ips_Oks  // Arrays de las ips que quieres aprobar
?>    
  ...espero te funcione
Saludos.-