ich wollte eine kleine flood protection mit einer ipsperre machen allerdings bekomme ich schon die bitte warten meldung bei leerer ip datenbank
aufruf:
funktionen:
aufruf:
PHP-Code:
if (!empty($_POST)) {
$fehler ="";
if (isip_gesperrt(getip())){
die ("Sie haben schon einen Eintrag gemacht bitte warten");
}
.....
}
PHP-Code:
function getip(){
$pheaders = array(
'HTTP_X_FORWARDED_FOR',
'HTTP_FORWARDED_FOR',
'HTTP_X_FORWARDED',
'HTTP_FORWARDED',
'HTTP_CLIENT_IP',
'HTTP_FORWARDED_FOR_IP',
'HTTP_VIA',
'VIA',
'X_FORWARDED_FOR',
'FORWARDED_FOR',
'X_FORWARDED',
'FORWARDED',
'CLIENT_IP',
'FORWARDED_FOR_IP',
'HTTP_PROXY_CONNECTION'
);
$ip = $_SERVER["REMOTE_ADDR"];
foreach($pheaders as $i){
//proxy detected? lets log...
if($_SERVER[$i])
$ip = $_SERVER[$i];
}
return $ip;
}
function isip_gesperrt($ip){
$db = new mysqli($GLOBALS['db_host'], $GLOBALS['db_user'], $GLOBALS['db_password'],$GLOBALS['db_name']);
if (mysqli_connect_errno()) {
die("Could not connect: ".mysqli_connect_error());
}
$sperre=time()-10;
$jetzt=time();
$ip = getip();
mysqli_query($db, "DELETE FROM ipsperre WHERE time<$sperre");
$result = mysqli_query($db,"SELECT ip FROM ip WHERE ip='$ip'");
$count=mysqli_num_rows($result);
if ($count>0){
mysqli_query($db,"INSERT INTO ip (ip, time) VALUES ('$ip', '$jetzt')");
return false;
}else
return true;
}
Kommentar