Archiv verlassen und diese Seite im Standarddesign anzeigen : PHP IP Sperre
Hallo,
weiss jemad wie ich eine IP Sperre auf http://phpscripts.x2.to/ einichten kann?
Thx mfg till ;)
Sowas? (ungetestet!)
<?php
if (!($ip = getenv('REMOTE_ADDR')) $ip = getenv('HTTP_X_FORWARDED_FOR');
$ips = array();
$ips[0] = "127.0.0.1";
$ips[1] = "192.168.2.1";
while (list($key,$val) = each($ips)) {
if ($val == $ip) die("Your IP is blocked!");
}
?>
Added after 8 minutes:
Hier nochn DNSBL Check in PHP. Ebenfalls ungetestet!
<?php
$blacklists = array('dnsbl.germany-irc.de', 'rbl.efnetrbl.org', 'tor.ahbl.org', 'cbl.abuseat.org', 'tor.dnsbl.sectoor.de', 'tor.kewlio.net.uk');
if (!($ip = getenv('REMOTE_ADDR')) $ip = getenv('HTTP_X_FORWARDED_FOR');
$iptc = explode(".", $ip);
$iptc = implode('.', array_reverse($iptc)) . '.';
foreach($blacklists as $bl) {
$check = $iptc . $bl;
if ($check != gethostbyname($check)) {
die('PHP Security: Your IP (' . $ip . ') is listed at ' . $bl . '
');
}
}
?>
Paran0id
27.10.2008, 21:06
Danke, funktionieren beide...
@Theradstarter: Bitte melde dich mal bei mir per icq [473716]
danke aber iwi gehts mir trotzdem net ^^
wenn ich da bei IP meine ip eingebe gehts net.. hab die ip von weismeineip.de oda so
blackberry
28.10.2008, 00:01
<?php
if (!($ip = getenv('REMOTE_ADDR')) $ip = getenv('HTTP_X_FORWARDED_FOR');
$ips = array();
$ips[0] = "127.0.0.1";
$ips[1] = "192.168.2.1";
while (list($key,$val) = each($ips)) {
if ($val == $ip) die("Your IP is blocked!");
}
?>
if (in_array($_SERVER['REMOTE_ADDR'], $ips)) die('O_o');
ist kürzer als dein while :D
(hab list() noch nie gemocht xD)
mfG. BlackBerry
heatshock
28.10.2008, 07:59
$filename=$_SERVER['REMOTE_ADDR'].".ips;
if (file_exists($filename)) {
print "You´re Banned";
exit;
}
müsste funktionieren..
erstelle einfach eine oder mehrere
"gebanteip.ips" erstellen
bsp.: 192.168.0.1.ips
Ok und jetzt habe ich grad ne andere Frage.
Also mein Ziel ist es dass man nach 5 verschickten Mails gesperrt wird für die nächsten 24 Stunden.
Wie kann ich sowas machen? Danke Vielmals für die Antworten!
Es geht immer noch um http://phpscripts.x2.to/
MFG Till
echoslider
28.10.2008, 16:10
nochmal das mit ip sperren:
order allow,deny
allow from all
deny from IPDIEDUNICHTWILLST
das ganze muss in ne datei namens:
.htaccess
dann das mit dem sperren(ohne mysql):
$ip=$_SERVER['REMOTE_ADDR'];
$datei = fopen(''.$ip.'.dat',"a+");
$count = fgets($datei, 10);
if($count == "")
{
$count = 0;
}
$count++;
rewind($datei);
fwrite($datei, $count);
fclose($datei);
if($count<="5")
{
.. der code der mit dem formular zusammenhängt
}
else
{
$date=date ("G", filemtime(''.$ip.'.dat'));
if($date>="24")
{
unlink(''.$ip.'.dat');
}
}
so ca musste nur bearbeiten.
das ist super so danke! aber ich will ja jetzt so machen dass wenn einer auf das script geht und ne mail senden will, nur 3 mails oder so in ner stunde senden kann.
Dannach 1 stunde ip sperren für mailversand ^^
geht das? wöre froh...
mfg till
echoslider
29.10.2008, 15:53
sowas is dann besser wenn man das ganze über mysql regeln.
damit kann man dann was in ne tabelle (namens "ips") eintragen.
mysql_connect($dbhost,$dbuser,$dbpass);
@mysql_select_db($db) or die( "Unable to select database");
$query = "INSERT INTO `ips` (ip,anzahl,zeit) VALUES ('$ip','$anzahl'.$zeit')";
mysql_query($query);
mysql_close();
damit kann man dann bestimmte werte auslesen und suchmaske wäre dann die ip. wenn die werte leer sind is die ip nicht gespeichert also hat die ip noch alle versuche....
mysql_connect($dbhost,$dbuser,$dbpass);
mysql_select_db($db) OR die(mysql_error());
$sql = "SELECT anzahl as anzahl,zeit as zeit FROM `ips` WHERE `ip`='$ip'";
$result = mysql_query($sql) OR die(mysql_error());
$row = mysql_fetch_assoc($result);
$anzahl=$row['anzahl'];
$zeit=$row['zeit'];
damit kannste dann die den werte für die anzahl der bisherigen versuche einer ip updaten.
mysql_connect($dbhost,$dbuser,$dbpass);
mysql_select_db($db) OR die(mysql_error());
$query="UPDATE `ips` SET anzahl='$neueanzahl' WHERE `ip`='$ip'";
mysql_query($query);
mysql_close();
und wenn du halt alles verglichen hast.
und der user z.b 5 versuche hatte aber die zeit älter oder gleich 24 stunden ist kannste die ip wieder aus der db löschen mit:
mysql_connect($dbhost,$dbuser,$dbpass);
mysql_select_db($db) OR die(mysql_error());
$query="DELETE FROM `ips` WHERE `ip`='$ip'";
mysql_query($query);
mysql_close();
kann dir ja nicht alles machen musst ja selbst lernen wie man simple schleifen und abfragen macht.....
Powered by vBulletin® Copyright ©2024 Adduco Digital e.K. und vBulletin Solutions, Inc. Alle Rechte vorbehalten.