С ip-тата проблема е голям, повечето доставчици забраняват HTTP_X_FORWARDED_FOR, чрез която можеш да видиш ип-то на клиентската машина. Често пъти, то не е и реално. Остават ип-то на хоста и евентуално маската на мрежата...
<?
if ($HTTP_SERVER_VARS["HTTP_X_FORWARDED_FOR"] != ""){
$IP = $HTTP_SERVER_VARS["HTTP_X_FORWARDED_FOR"];
$proxy = $HTTP_SERVER_VARS["REMOTE_ADDR"];
$host = @gethostbyaddr($HTTP_SERVER_VARS["HTTP_X_FORWARDED_FOR"]);
}else{
$IP = $HTTP_SERVER_VARS["REMOTE_ADDR"];
$host = @gethostbyaddr($HTTP_SERVER_VARS["REMOTE_ADDR"]);
}
?>
Подмени си $HTTP_SERVER_VARS със $_SERVER и си готов
Повече тук:
http://bg.php.net/manual/en/function.gethostbyaddr.php
http://bg.php.net/manual/en/reserved.variables.php
За бан-а, вече трябва да си го допишеш...