~ GELÖST ~ / IP Weiterleitung

ip2long kann nur eine IP umwandeln
du musst alle deine IPs in einem array abspeichern, mitforeach auslesen, jede einzel umwandeln und dann abfragen ob sie dabei ist.

So bin wieder da!

ip2long kann nur eine IP-Adresse in eine Zahl konvertieren, wie mein Vorredner bereits gesagt hat.

Hier hast du die Lösung:

[code]<?php

$passed = “http://www.okey.de/”; // Zugriff gestattet => Weiterleitung
$denied = “http://www.sperrseite.de/”; // Zugriff verweigert => Weiterleitung

/* Du fragst dich warum ich nicht nur $_SERVER[‘REMOTE_ADDR’] nehme?

  • Weil das hier mehr Chance hat die IP herauszufinden.
  • Nicht jeder Browser zeigt die IP! */
    $ip = ip2long((!empty($_SERVER[‘HTTP_CLIENT_IP’]) ? $_SERVER[‘HTTP_CLIENT_IP’] :
    (!empty($_SERVER[‘HTTP_X_FORWARDED_FOR’]) ? $_SERVER[‘HTTP_X_FORWARDED_FOR’] : $_SERVER[‘REMOTE_ADDR’])));

$min_ip = ip2long(“0.0.0.0”); // Darf mindestens diese IP sein.
$max_ip = ip2long(“255.255.255.255”); // Darf höhstens diese IP sein.
$ips = array( // Alle IPs in diesem Array sind verboten!
“83.23.405.10”,
“12.123.43.23”,
);

if (($ip >= $min_ip && ($max_ip == -1 ? true : ($ip <= $max_ip))) || in_array($ip, $ips)) header(“Location: $denied”);
else header(“Location: $passed”);

?>[/code]

Nicht getestet, müsste aber funktionieren!

Das Array hat doch schon einen Fehler drin :ps:
DragonWork hatte es wohl eilig…
Wie wäre es mit:

$ips = array('111.111.111.111','222.222.222.222'); foreach($ips as $deny_ip){ $deny_ip = ip2long($deny_ip); if($deny_ip == $ip){ Rausschmeißen } }Damit kannst du aber keine ip-range definieren…

Danke xD ich hab mich so köstlich amüsiert auf den 5 Seiten :smiley:
@ server-01: du bist sowas faules :smiley: egal was man dir für einen ratschlag gibt xD du ignorierst ihn einfach und drängst weiter darauf das jemand dir die Lösung frei haus liefert =) und zwar genau so das du sie nur noch hochladen musst :smiley: das is ja mehr wie dreist xD

Ups, sry. Ich hab völlig vergessen das $ip bereits in eine Zahl konvertiert wurde.
Und dann lass ich Sie in einem Array mit IP durchlaufen. Ich Idiot. :motz:
Schande für meinen PHP-Meisterrang. :ps:

Als Entschuldigung habe ich dir ein echtes Skript geschrieben:

[code]<?php

/*
IP-Filter v1.0
by DragonWork
*/

// Seite wenn OK
$passed = „http://www.okey.de/“;
// Seite wenn Fehler
$denied = „http://www.sperrseite.de/“;

// IP-Range
$iprange = „127.0.1.0-255.255.255.255“;
// Sollen die im IP-Range erlaubt, oder verweigert werden?
// Schreibe „ja“ für erlaubt, „nein“ für verweigert!
$ipr = „ja“;

// White-/Black-List
$list = array(
‚123.123.123.123‘,
‚84.230.94.23‘,
‚23.94.950.34‘,
‚127.0.0.1‘,
);
// Sollen die in der Liste erlaubt, oder verweigert werden?
// Schreibe „ja“ für erlaubt, „nein“ für verweigert!
$ipl = „ja“;

######################AB HIER NICHT MEHR ÄNDERN###############################
function redirect($url) {
global $ip;
$q = $ip;
return exit(/header(„Location: $url?$q“)/$url);
}
$ip = (!empty($_SERVER[‚HTTP_CLIENT_IP‘]) ? $_SERVER[‚HTTP_CLIENT_IP‘] :
(!empty($_SERVER[‚HTTP_X_FORWARDED_FOR‘]) ? $_SERVER[‚HTTP_X_FORWARDED_FOR‘] : $_SERVER[‚REMOTE_ADDR‘]));
$ip2 = ip2long($ip);
$iprange = explode("-", $iprange);
$ipr0 = ip2long($iprange[0]); $ipr1 = ip2long($iprange[1]);

if (($ip2 >= $ipr0) && ($ipr1 == -1 ? true : ($ip2 <= $ipr1))) redirect(($ipr == „ja“ ? $passed : $denied));
else if (in_array($ip, $list)) redirect(($ipl == „ja“ ? $passed : $denied));
else redirect(($ipl == „ja“ ? ($ipr == „ja“ ? $denied : $passed) : $passed));
######################AB HIER NICHT MEHR ÄNDERN###############################

?>[/code]

Funktioniert zu 100%!

Mit freundlichen Grüßen,
DragonWorked :ps:

Edit: Hier ist auch kein minimum und maximum in den Arrays erlaubt. Ich habs gerade erst gesehen. Aber jetzt muss ich erst meinen Online-TicTacToe-Spiel fertig kriegen. Ich hab mit ein paar Leuten gewettet, dass ich das mit Ajax und PHP kann ^^.

Wie gesagt, wenn du eine Leseschwäche hast, sag es bitte.
Aber jetzt kannst du ja zufrieden und auch stolz sein, du hast ganz allein jemanden dazu gebracht dir ein fertiges Script zu schreiben…
Im Endeffekt wirst du schon sehen was das IP sperren bringt…Wenn jemand 1 Minute lang die Bots auf dich hetzt sitzt du 10 Minuten lang beim sperren…hf

Dann schreibe eben eine umleitung rein.
z.B.:

// Seite wenn OK $passed = header("Status: 301 Moved Permanently"); header("Location:http://www.google.at"); exit; // Seite wenn Fehler $denied = header("Status: 301 Moved Permanently"); header("Location:http://www.sperrseite.at"); exit;

PS:Wenn man seinen Router neustartet dann hat man doch ne andre IP oder bin ich da falsch?
Oder unter Umständen bekommt jemand ne gesperrte zugeteilt.

Gruß Nikolas

Funzt die Umleitung?

Aber wenn das wirklich so ist (bin mir sogar fast sicher das es so ist) dann ist das ganze Script sowieso so gut wie unnötig.
Außerdem gibt es glaube ich nach 24Std sogar eine zwangstrennung und dann bekommt man auch ne neue IP.(Meine ich mal gehört zu haben)
Naja warten wir mal was jemand anderes dazu meint!

Kommt auf den Anbieter an…Ich bekomme sie ~jedes halbe Jahr resettet…
Aber per IP aussperren ist ein Teil von einem Blacklisting-Verfahren…zusätzlich sollte man noch per Cookie aussperren versuchen, aber auch das lässt sich verhindern (Das wäre dann für die 0815 internet user)

Du bist vorallem nicht lustig :smiley:

Eine IP-Sperre zur eindeutigen Nutzeridentifizierung ist nur Schwachsinn o.O ich bekomm pro Tag 1-2 mal ne neue IP-Adresse.

Jop, amity, langsam wirds echt sehr lustig, echt wunderbar sich das anzuschauen :smiley:!

Vielleicht - wenn du mal “gescheite” Fragen stellen würdest …?

Darauf, dass du dich nicht komplett auf die “faule Haut” legen und auf fertigen Code, den du dann nur noch per C&P einbauen musst, warten sollst, wurde ja schon angemerkt.

Dass du dich selber mehr mit der Materie beschäftigst, lässt du aber noch so gut wie gar nicht erkennen. Stattdessen vor dir weiterhin nur entweder “funktioniert aber noch nicht”-Statements oder “ach und dann hätte ich noch gerne Funktionalität XY mit drin”-Nachbestellungen …

ja…

unterschreibt chrisb’s Beitrag

vor header() dürfen keinerlei Ausgaben gemacht werden, also kein

[code]whatever

<?php header() [...][/code] und kein [code] <?php echo 'whatever'; header()[/code]

Nein, jetzt bist du dran - und zwar damit, dich endlich mal selber zu informieren!

“headers already send” dürfte eine der im Netz bestdokumentiertesten PHP-Meldungen überhaupt sein.

Du hast bereits eine Antwort bekommen. Wo ist das Problem?

[quote=“Mgier”]vor header() dürfen keinerlei Ausgaben gemacht werden, also kein

[code]whatever

<?php header() [...][/code] und kein [code] <?php echo 'whatever'; header()[/code][/quote] Danke, dass du mich erfolgreich ignorierst...

Was heißt es ging gar nichts mehr? Hat es nicht funktioniert? Gab es einen Fehler?

Wenn wir den Code nicht kennen, können wir dir nicht helfen. Meine Glaskugel ist schon wieder in Reparatur. o.0

Hallo,

ich war seit 1-2 tagen nicht aktiv,…

Also ich hab den thread jetzt nicht genau durchgelesen, aber was ist denn das?!:

[quote]function redirect($url) {
global $ip;
$q = $ip;
return exit(/*header(“Location: $url?$q”)*/$url);
}[/quote]
Ich habs das fürs Testen geschrieben, dann hab ich es wohl vergessen zu löschen.

Das müsste so aussehen:

function redirect($url) { return exit(header("Location: $url")); }

Entschuldigung nochmals und mit freundlichen Grüßen,
DragonWork