IP - Block auslesen und bestimmte sperren - Wie?
Holger
- php
0 Holger0 Thomas Luethi0 Holger0 Thomas Luethi0 Holger0 Thomas Luethi0 Holger
Hallo,
also ich will bestimmte User von meinem Forum weghalten, d.h. jemand hat eine bestimmte IP und soll auf eine andere Seite geleitet werden. Also ich will ganze IP-Blocks sperren d.h. 80.142.xxx.xxx, also jeder User mit der 80.142 IP soll auf eine ander Seite umgeleitet werden. Wie kann ich das anstellen, dass das funktioniert?
Hoffe auf Antworten! :)
Danke!
Micha
Micha
LOL, ich bin Holger. "Tschüß Micha" habe ich gerade zu jemanden am Telefon gesagt und schreibe dabei auch noch Micha. :-(
Hallo,
also ich will bestimmte User von meinem Forum weghalten, d.h. jemand hat eine bestimmte IP und soll auf eine andere Seite geleitet werden.
Das ist eigentlich nur brauchbar, wenn der "boese" Benutzer
immer den gleichen Provider benutzt und dort auch eine
statische IP-Adresse hat.
Also ich will ganze IP-Blocks sperren d.h. 80.142.xxx.xxx, also jeder User mit der 80.142 IP soll auf eine ander Seite umgeleitet werden.
Damit sperrst Du vermutlich sehr viele "Unschuldige".
Wenn Du das in Kauf nehmen willst...
http://www.dclp-faq.de/q/q-code-ip.html
$ip = getenv('REMOTE_ADDR');
oder
$ip = $_SERVER['REMOTE_ADDR'];
Dann mit Stringfunktionen pruefen, ob der Anfang
der IP-Adresse mit Deinem Muster uebereinstimmt.
Gruesse,
Thomas
Hallo Thomas,
Damit sperrst Du vermutlich sehr viele "Unschuldige".
Wenn Du das in Kauf nehmen willst...
In Moment gibt es laut Serverlog nur diesen einen User mit 80.142
Ich will diese IP-Block nur mal für zwei Wochen sperren.
http://www.dclp-faq.de/q/q-code-ip.html
$ip = getenv('REMOTE_ADDR');
oder
$ip = $_SERVER['REMOTE_ADDR'];Dann mit Stringfunktionen pruefen, ob der Anfang
der IP-Adresse mit Deinem Muster uebereinstimmt.
Ich habe mal das eben geschrieben:
Ich habe immer 80.133.xx.xx
<?
$ip_address = $_SERVER['REMOTE_ADDR'];
$tok = strtok ($ip_address,".");
$m=1;
while ($tok)
{
$byte[$m]=$tok;
$tok = strtok (".");
$m++;
}
if ($byte[1]=="80.132") echo "Zugriff erlaubt";
if ($byte[1]!="80.132") echo "Zugriff nicht erlaubt";
?>
Das hilft mir leider nicht viel, ich komme immer auf "Zugriff nicht erlaubt". Egal ob ich meine IP eintrage oder nicht. Ist da irgendwas falsch in diesem Script?
Danke, Holger!
Hallo,
Ich habe immer 80.133.xx.xx
Und im Skript vergleichst Du auf 80.132...
if ($byte[1]=="80.132") echo "Zugriff erlaubt";
if ($byte[1]!="80.132") echo "Zugriff nicht erlaubt";
Was steht denn in $byte[1]?
Lass Dir den Wert anzeigen, bevor Du ihn in
der IF-Bedingung verwendest!
Gruesse,
Thomas
Was steht denn in $byte[1]?
Hmmm, da kommt nur 80 raus. Wo hole ich die 133 noch her? *grübel*
Hallo,
Hmmm, da kommt nur 80 raus. Wo hole ich die 133 noch her? *grübel*
Naja, beschaeftige Dich mal etwas intensiver mit den String-Funktionen
http://www.php.net/manual/de/ref.strings.php
Insbesondere das von Dir benutzte strtok() oder das
verwandte explode()/implode() duerften schon ein
guter Ansatz sein. Wenn man sie richtig einsetzt.
Vielleicht auch interessant: Strings verknuepfen:
http://www.php.net/manual/de/language.operators.string.php
Gruesse,
Thomas
Hallo Thomas,
OK, so funzt es...
<?
$ip_address = $_SERVER['REMOTE_ADDR'];
$tok = strtok ($ip_address,".");
$m=1;
while ($tok)
{
$byte[$m]=$tok;
$tok = strtok (".");
$m++;
}
echo "$ip_address <br>";
echo "$byte[1] <br>";
echo "$byte[2] <br>";
$ipp = $byte[1].$byte[2];
echo "$ipp <br>";
if ($ipp=="80133") echo "Zugriff nicht erlaubt";
if ($ipp!="80133") echo "Zugriff erlaubt";
?>
Moin,
OK, so funzt es...
$ipp = $byte[1].$byte[2];
if ($ipp=="80133") echo "Zugriff nicht erlaubt";
Aber eher zufällig. Was wäre wenn du die IP-Addresse 12.3... sperren wolltest? Und nun überlege dir was passiert wenn jemand mit 1.23... kommt.
In $_SERVER['REMOTE_ADDR'] hast du doch schon die ganze Addresse. Warum nimmst du sie auseinander um sie dann falsch zusammenzusetzen? Gefällt dir irgendwas an preg_match() bzw. strpos() nicht?