Se podria hacer que cuando entre un visitante haga una consula a la base de datos con su ip y tome acciones desde ahi..obviamente esto no puede evitar que si el visitante cambia de ip no lo reconozca... ademas generaria muchas consultas hacia la bd....
<?php
$limit = 5;
$db_host = "localhost";
$db_user = "root";
$db_pass = "toor";
$db_name = "limite";
$ip = $_SERVER['REMOTE_ADDR'];
$die_string = "Tu Ip ( $ip ) ha superado el limite maximo ( $limit ) de visitas por hoy. Por favor vuelve mañana.";
$ss_IP = $row['ip'];
$ss_TI = $row['time'];
$ss_TS = $row['times'];
$ss_TSs = $ss_TS + 1;
if ($ss_TI < time() -86400) {mysql_query("DELETE FROM tabla_limite WHERE ip='$ss_IP'");} elseif ($ss_TS >= $limit) {die($die_string);} else {mysql_query("UPDATE tabla_limite SET times = '$ss_TSs',time = '".time()."' WHERE ip='$ss_IP'");} }
} else {
mysql_query("INSERT INTO tabla_limite (ip,times,time) VALUES ('$ip','1','".time()."')"); }
?>
Esto lo que hace es comprobar si existe un registro con la ip del visitante...en caso de existir y ha superado el limite de visitas detiene todo y salta un mensaje de error...en caso de que no haya superado el limite... también chekea si han pasado 24 horas desde la ultima vez (86400 seg = 24h) y en caso de que si borra el registro. En caso de que no se haya cumplido ninguna de las anteriores añade +1 a las veces que ha entrado y modifica el tiempo..
Y en caso de no existir tal registro lo crea...
Saludos