User / IP für Homepage/Gästebuch sperren

#0
12.10.2005, 17:47
Member
Avatar Laserpointa

Beiträge: 2176
#1 Hallo,

da es hier im Augenblick nur so Anfragen hagelt, wie man unerwünschte Besucher von Webseiten bzw. aus Gästebüchern aussperren kann hier eine einfache Methode anhand der .htaccess Datei:
(man benötigt natürlich ein Gästebuch, welches IP's loggt)

1.) man erstelle eine Datei namens .htaccess auf dem Server (irgendeine Datei hochkopieren und dort umbenennen.)

2.) mit folgenden Eintragung in der .htaccess kann man beliebige IP's daran hindern die Website aufzurufen:

<LIMIT GET POST>
order deny,allow
deny from 80.129.224.46
deny from .aol.com
deny from 192.168
</LIMIT>


mehr Infos: Selfhtml htaccess

falls der User eine dynamische IP verwendet, muss man zumindest temporär einen ganzen IP Block aussperren (auch wenn man Gefahr läuft damit auch für einen gewissen Zeitraum andere User auszusperren)

Greetz Lp
Seitenanfang Seitenende
12.10.2005, 21:17
Member

Beiträge: 30
#2 Hallo,

danke für deinen Post, doch eine IP-Sperre würde ich mit PHP + MySQL realisieren. Es lässt sich einfach einfacher handhaben, das Script muss das .htaccess nicht umschreiben, sondern die Seite einfach nur ausgeben, wenn die IP nicht in einere blocktable drin ist.

Auch mit Cookies können einige Benutzer ausgesperrt werden, auch wenn das die Leute, die unbedingt hinein wollen, nicht hindert. Das Beste wäre eine Kombination aus IP- und Cookiesperre.
__________
greez
honk
Dieser Beitrag wurde am 12.10.2005 um 23:15 Uhr von mr_honk editiert.
Seitenanfang Seitenende
12.10.2005, 23:11
Member
Themenstarter
Avatar Laserpointa

Beiträge: 2176
#3 diese Lösung ist natürlich für alle die kein PHP/MySQL haben!
da Du ja anscheinend in der Materie fit bist ;)

darfst Du gerne etwas entwickeln und hier veröffentlichen!
z.B. eine einfach include ... Datei die man verwenden kann, wenn man seine Website mit einer einfachen IP Sperre upgraden möchte! - eventuell auch mit einer einfachen Dateidatenbank (also ohne MySQL)

Greetz Lp
Seitenanfang Seitenende
13.10.2005, 00:16
Member

Beiträge: 30
#4 Obwohl ich die Meinung vertrete, dass jeder selbst sein Ding coden soll, hab ich mich noch ein bisschen angestrengt:

Um eine Seite zu schützen, einfach folgende 2 Dateien in dasselbe Verzeichnis kopieren und diese Zeile einfügen (vorzugsweise nach dem <body> Tag):

PHP Code


<?php include('checkip.php'); ?>

Was fehlt, und für eine gutes Handling nötig wäre, ist ein Script, dass eine IP wieder aus der Datei entfernt.

checkip.php:

PHP Code


<?php
<!-- ipblock '05 by honk@bk.ru !-->
    $user_ip = $_SERVER['
REMOTE_ADDR'];
    
    //datei nach ip durchsuchen. wird sie gefunden, wird die seite nicht ausgegeben.
    $array = file('
ipblock.txt');

    foreach($array as $zeile) {
        if ($user_ip == trim($zeile)) {
            die('
<div style="color: #FF0000; font-weight: bold;">Ihre IP-Adresse ist gesperrt!</div>'."\n</body>\n</html>");
        }
      }
?>


addip.php (das erste '<?php' weglassen... [@admins: könntet ihr das ändern?]):

PHP Code


<?php
<!-- ipblock '05 by honk@bk.ru !-->
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>ipblock - adresse hinzufügen</title>
</head>
<body>
<h3>ipblock</h3>
<?php
if ($_SERVER['
REQUEST_METHOD'] == "GET") {
    //wenn die methode get ist, wird nur die form ausgegeben
    
    echo '
<form id="form1" name="form1" method="post" action="addip.php">
  <
table width="200" border="0">
    <
tr>
      <
td>
        <
input name="ip" type="text" id="ip" maxlength="9" />
      </
td>
      <
td>
        <
input type="submit" name="Submit" value="Eintragen" />
      </
td>
    </
tr>
  </
table>
</
form>';
} else {
    //wenn die methode post ist (wenn man also die form benutzt hat), 
    //wird die ip in eine datei geschrieben.
    //zusätzlich wird die form ausgegeben
    
    $ip = $_POST['
ip'];
    
    $file = fopen('
ipblock.txt','a+');
    fwrite($file, $ip."\n");
    fclose($file);
    
    echo '
<div>ip-adresse wurde in die datei geschrieben.</div>'."\n";
    echo '
<form id="form1" name="form1" method="post" action="addip.php">
  <
table width="200" border="0">
    <
tr>
      <
td>
        <
input name="ip" type="text" id="ip" maxlength="9" />
      </
td>
      <
td>
        <
input type="submit" name="Submit" value="Eintragen" />
      </
td>
    </
tr>
  </
table>
</
form>';
}
?>
</body>
</html>
?>



__________
greez
honk
Dieser Beitrag wurde am 13.10.2005 um 09:11 Uhr von mr_honk editiert.
Seitenanfang Seitenende
13.10.2005, 00:54
Member
Themenstarter
Avatar Laserpointa

Beiträge: 2176
#5 Hey honk,

bin gerade baff und fliege vom Hocker!
ein grosses RESPEKT und Danke für Deine Mühe!
ich bin mir sicher das das einige hier (auch ich) super gebrauchen können! :yo

Greetz Lp
Dieser Beitrag wurde am 13.10.2005 um 01:01 Uhr von Laserpointa editiert.
Seitenanfang Seitenende
16.02.2007, 08:27
...neu hier

Beiträge: 1
#6 2005 oha, script funtzt super, aber wie kann ich die IPs Sperren mit z.b. 77.*.*.* ?


thx
Seitenanfang Seitenende
16.02.2007, 10:57
Member
Avatar Xeper

Beiträge: 5291
#7

Zitat

Michae3454 postete
2005 oha, script funtzt super, aber wie kann ich die IPs Sperren mit z.b. 77.*.*.* ?


thx
Jo zb.

Code

foreach($array as $zeile) {
        if ($user_ip == trim($zeile)) {
            die('<div style="color: #FF0000; font-weight: bold;">Ihre IP-Adresse ist gesperrt!</div>'."\n</body>\n</html>");
        }
      }
... hier könnte man mit regex arbeiten.

Also statt:

Code

if($user_ip == trim($zeile)) {
das:

Code

if(eregi(trim($zeile), $user_ip) {
Dann könnte man auch in der Datei die geschrieben wird zb. 77. schreiben.
Den code würde ich aber noch verbessern...
__________
E-Mail: therion at ninth-art dot de
IRC: megatherion @ Freenode
Seitenanfang Seitenende
10.05.2007, 19:16
...neu hier

Beiträge: 1
#8 Hallo, ich habe bei der addip.php noch ein klein wenig dazu gescript :-)

Zitat

<!-- ipblock '05 by honk@bk.ru !-->
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>ipblock - adresse hinzufügen</title>
</head>
<body>
<h3>ipblock</h3>
<?php
if ($_SERVER['REQUEST_METHOD'] == "GET") {
//wenn die methode get ist, wird nur die form ausgegeben

echo '<form id="form1" name="form1" method="post" action="addip.php">
<table width="200" border="0">
<tr>
<td>
<input name="ip" type="text" id="ip" maxlength="14" />
</td>
<td>
<input type="submit" name="Submit" value="Eintragen" />
</td>
</tr>
</table>
</form>';
} else {
//wenn die methode post ist (wenn man also die form benutzt hat),
//wird die ip in eine datei geschrieben.
//zusätzlich wird die form ausgegeben

$ip = $_POST['ip'];

$file = fopen('ipblock.txt','a+');
fwrite($file, $ip."\n");
fclose($file);

echo '<div>ip-adresse wurde in die datei geschrieben.</div>'."\n";
echo '<form id="form1" name="form1" method="post" action="addip.php">
<table width="200" border="0">
<tr>
<td>
<input name="ip" type="text" id="ip" maxlength="9" />
</td>
<td>
<input type="submit" name="Submit" value="Eintragen" />
</td>
</tr>
</table>
</form>';
}
?>
<br>
<b> bisher geblockte Ip`s:</b>
<br><br>
<?php
$fp = fopen("ipblock.txt","r");
if ($fp)
{
while (!feof($fp))
{
$zeile = fgets($fp, 100);
echo "$zeile<p>";
}
fclose($fp);
}
else
echo "Ipblock.txt wurde nicht gefunden";
?>

</body>
</html>
Ich hoffe ich es gefällt euch so besser. Da muss man nicht immer die Ipblock.txt extra noch öffnen.

Aber ich muss sagen. mr_honk, du kannst einmanfrei Programmieren. Komplimente.

Thx
Seitenanfang Seitenende
27.06.2007, 18:21
Member

Beiträge: 38
#9 ich versteh das alles nich so bin noch ein anfänger wo soll den die ip hin die gebant werden soll
__________
Der Computer kan nichts anderes als an und aus (ziemlich dumm)
Seitenanfang Seitenende
27.06.2007, 18:55
Member
Avatar Xeper

Beiträge: 5291
#10

Zitat

lukas1 postete
ich versteh das alles nich so bin noch ein anfänger wo soll den die ip hin die gebant werden soll
In ipblock.txt soweit ich das verstehe.

Zitat

Aber ich muss sagen. mr_honk, du kannst einmanfrei Programmieren. Komplimente.
Ja aber du leider nicht ;) Nicht so persönlich nehmen aber du kannst ja nicht <br> nutzen wenn du im DOCTYPE XHTML stehen hast dann ist es <br /> da bei XHTML alle Elemente die keine End-Tags besitzen so abgeschlossen werden müssen.
<b> Element gibts auch nicht in XHTML, schon mal was von CSS gehört?
Naja kann man 1:1 nicht ganz so übernehmen - nicht wenn man sauberen Code möchte.
__________
E-Mail: therion at ninth-art dot de
IRC: megatherion @ Freenode
Seitenanfang Seitenende
06.01.2008, 14:03
...neu hier

Beiträge: 7
#11 Cool...

Ich hab dazu noch ne Frage...Wie kann man das machen, das man das auch über so ein Formular wieder löscht die gebannten IP wenn man sich da mal vertippt hat oder so, weil es umständlich ist immer die .txt datei zu öffnen und die rauszusuchen...

LG Basti
Seitenanfang Seitenende
06.01.2008, 14:30
Member
Avatar Xeper

Beiträge: 5291
#12

Zitat

basti91 postete
Cool...

Ich hab dazu noch ne Frage...Wie kann man das machen, das man das auch über so ein Formular wieder löscht die gebannten IP wenn man sich da mal vertippt hat oder so, weil es umständlich ist immer die .txt datei zu öffnen und die rauszusuchen...

LG Basti
Die Datei einlesen, parsen und ein kleines Form dazu schreiben die die Änderung dann in die TXT Datei speichert.
__________
E-Mail: therion at ninth-art dot de
IRC: megatherion @ Freenode
Seitenanfang Seitenende
Um auf dieses Thema zu ANTWORTEN
bitte erst » hier kostenlos registrieren!!

Folgende Themen könnten Dich auch interessieren:
  • » Anleitung:
  • »
  • »
  • »
  • »