IP Sperre

Wenn du Fehler im Scipt entdeckst oder Anregungen zur Verbesserung hast kannst du dies hier posten

Moderator: Paddelberg

Antworten
urkman
Beiträge: 15
Registriert: Samstag 10. Mai 2008, 19:00

IP Sperre

Beitrag von urkman » Samstag 7. Mai 2011, 22:11

Hallo,

ich weiß nicht ob das es hier schon gibt, aber ich würde gern etwas haben um bestimmte ip Adressen zu sperren damit keine Seiten von den jenigen eingetragen werden können.

Hintergrund ist, das immer wieder Seiten in Türkischer sprache eingetragen werden obwohl ich in den Rules darauf hingewiesen das seiten in Türkischer sprache noch nicht eingetragen werden können.

Ich habe auch schon Capcha eingeschalten.

mfg

Benutzeravatar
Paddelberg
Site Admin
Beiträge: 896
Registriert: Dienstag 17. Januar 2006, 00:02
Wohnort: Worms

Beitrag von Paddelberg » Samstag 7. Mai 2011, 22:46

Hi

du könntest dir folgenden Code in dei add.php einfügen. (in Zeile 22 nach dem Code $do = safety($_GET["do"]); )

Code: Alles auswählen

$ips = '154.58.78.68,154.58,154.58-154.59';
$error_message = '';

function ip_block ($ips, $error_message = false)
	{
	$ips = explode (',', $ips);

	foreach ($ips as $ip)
		{
		# ip range
		if (preg_match ("@(.*)\-(.*)@", $ip, $match))
			{
			if (substr ($_SERVER['REMOTE_ADDR'], 0, strlen ($match[1])) >= $match[1] && substr ($_SERVER['REMOTE_ADDR'], 0, strlen ($match[2])) <= $match[2])
				{
				header("HTTP/1.1 403 Forbidden");
	
				if (!empty ($error_message))
					{echo $error_message;}
				else
					{echo 'Forbidden';}

				exit ();
				}
			}
		
		# ip oder teil
		else
			{
			if (preg_match ("@^".preg_replace ("@\.@", '\\.', $ip)."@", $_SERVER['REMOTE_ADDR']))
				{
				header("HTTP/1.1 403 Forbidden");

				if (!empty ($error_message))
					{echo $error_message;}
				else
					{echo 'Forbidden';}
				
				exit ();
				}
			}
		}
	}

ip_block ($ips, $error_message);
in der Variablen $ips (erste Zeile) kannst du die ips angeben, die gesperrt werden sollen (die, die momentan drin stehen können gelöscht werden)
Die ips müssen dabbei nach Komma getrennt werden
Du kannst entweder einzelne ips angeben (123.123.123.123)
oder ip Ranges
123.123-123.125 -> sperrt alle ips im Bereich 123.123.0.0 - 123.125.255.255
123.123 (sperrt den Bereich von 123.123.0.0 - 123.123.255.255

zusätzlich kannst du eine eigene Fehlemeldung angeben (standard wird Forbidden ausgegeben), indem du in der zweiten Zeile die Variable $error_message mit einem beliebigen Text belegst.

mfg
simon

Antworten