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:
Se nel db ho un intero range e l'ip del visitatore è, ipotesi, 192.168.1.2: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";
}
}
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?