Si puedes leer la IP antes de mostrar nada la solución es filtrar lo que puede ver esa IP.
Es decir si hay 10 archivos posibles a visitar, y la IP ya ha visitado alguno solo le dejo escoger entre los que no ha visitado. Para ello quizas lo mejor seria guardar la IP y el identificador del archivo visitado para facilitar el filtro posterior. Si solo es un archivo lo mismo muestro o no muestro el link a ese archivo. Es decir al archivo no le hago nada, lo puede ver todo el mundo, pero solo ofrezco el acceso a los que pueden verlo.
Para tratar el tema de los rangos tienes la función
explode que te permite separar la IP
Código PHP:
Ver original$ip="123.123.123.123";
$rango=$arIp[0].".".$arIp[1].".".$arIp[2].".%";
echo $rango."<br />";
//Las ip que NO estan en el rango
$sql="SELECT ip FROM tablaIps WHERE ip NOT LIKE ".$rango.";";
//Las ips del rango
$sql="SELECT ip FROM tablaIps WHERE ip LIKE ".$rango.";";
Ojo % no *