Ho una tabella con degli ip nei seguenti formati:

192.168.1.1
192.168.1.*
192.168.*.*
192.*.*.*

Con questo codice vedo se l'IP del visitatore è tra quelli nel db, se sì devo bannarlo:

Codice PHP:
$iputente explode(".",$_SERVER['REMOTE_ADDR']); 
$sql mysql_query("SELECT ip FROM ip_tab ORDER BY ip ASC");

while (
$row mysql_fetch_array($sql)) {                    
  
$ip_db explode("."$row['ip']); 
  if ((
$ip_db[0]==$iputente[0]) && ($ip_db[1]==$iputente[1] || $ip_db[1]=='*') && ($ip_db[2]==$iputente[2] || $ip_db[2]=='*') && ($ip_db[3]==$iputente[3] || $ip_db[3]=='*')) { 
  echo 
"bannato";
} else {
  echo 
"ok";
 }

Se nel db ho un intero range e l'ip del visitatore è, ipotesi, 192.168.1.2:

192.168.1.1
192.168.1.2
192.168.1.3
...

il codice non funziona cioè non lo riconosce come bannato. In tutti gli altri casi (ip con * o singolo) invece funziona.
Come mai? Sbaglio la query o cosa?