Umleitung für bestimmte IP-Ranges ?
lima-city → Forum → Programmiersprachen → PHP, MySQL & .htaccess
adresse
array
aufruf
bedingung
behandeln
blocken
bot
code
ermitteln
fehler
header
http
listen
log
mache
publikum
rang
run
webseite
ziffer
-
Hallo
ich möchte bei Aufruf meiner Webseite durch bestimme IP-Ranges
auf eine andere Seite umleiten, das klappt aber nicht ?!?
also habe im BSP Code mal zwei IP-Ranges rein,
nur wenn Besucher innerhalb dieser IP-Ranges ist, soll umgeleitet werden
ABER ... ich werde auch mit allen anderen IPs umgeleitet
keine Anhnung warum, habe doch eine Bedingung if (...)
damit nur User umgeleitet werden, die in der definierten IP-Ranges sind
was mache ich falsch ?!
hier mein Code
<?php // ------------------------------------------------------ $ip_ranges = array( array( '5.255.253.000', '5.255.253.255' ), array( '220.181.108.000', '220.181.108.255' ), ); // ------------------------------------------------------ $userip = $_SERVER['REMOTE_ADDR']; $location = 'umleitungseite.php'; // ------------------------------------------------------ function ipRangeRedir ($ip_ranges, $userip, $location) { foreach($ip_ranges as $irange) { $range_rlow = ip2long($irange[0]); $range_high = ip2long($irange[1]); if ($range_rlow <= $userip && $userip <= $range_high) { header ('HTTP/1.1 301 Moved Permanently'); header ('Location: '.$location); } else { // --- do something else ---- } } return true; } // ------------------------------------------------------ $run = ipRangeRedir($ip_ranges, $userip, $location); // ------------------------------------------------------ ?>
... was mache ich falsch ?!
... bzw wie (richtig) Umleitung nur für vor-definierte IP-Ranges machen ?
Danke
EDIT ... und Wichtig ... wie macht man das es auch mit IPv6 Adressen funktioniert ?!
Beitrag zuletzt geändert: 25.10.2014 15:36:59 von alg -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
So wie es aussieht ist der Fehler sehr einfach zu beheben: dir fehlt ein
für dieip2long()
. Du solltest dann übrigens prüfen, ob bei genau diesem Schritt$userip
zurückkommt, denn dann handelt es sich vermutlich um IPv6 und das musst du anders behandeln.FALSE
IPv6-Ranges sperren ist übrigens fraglich, ob das eine gute Idee ist. Schließlich wirst du damit mit hoher Warscheinlichkeit auch »Unschuldige« aussperren, wenn du nicht ganz genau aufpasst was du tust … das gilt übrigens auch für IPv4.
Beitrag zuletzt geändert: 25.10.2014 15:59:51 von hackyourlife -
Hallo
ok, das ip2long() für die $userip hatte ich vergessen
habe jetzt vor die foreach() Schleife noch eingefügt:
$userip = ip2long($userip); if (FALSE === $userip) { break; return false; } // --- ipv6
aber auch damit geht es nicht ... es werden immer alle IPs umgeleitet ?!
... EDIT
Fehler gefunden, die IP-Ranges sind falsch definiert
$ip_ranges = array( array( '5.255.253.0', '5.255.253.255' ), array( '220.181.108.0', '220.181.108.255' ), );
ein Bereich
gibt es nicht, es geht von .0 bis .255.000
also nicht 3 mal 0 (Null) als Block, eintsllige auch nur eine Ziffer ... 0,1,2,3, ... 9
zu ipv6 und Sinn
... es muss doch auch in Zukunft möglich sein, bestimmte ips zu blocken
oder just-in-time die Herkunft einer IP-Adresse zu ermitteln ?! (geoip / ip2loc)
meine Webseite richtet sich nur an deutsch-sprachiges Publikum
da will ich Aufrufe z.B. aus China, Russland, Brasilien, etc. umleiten
denn laut meiner log-Datei und ein bischen Recherch waren fast alle IPs
aus den besagten Ländern nur "böse" Bots (Spam / Email-Klau / Traffic ...)
wenn diese "Neuen" ipv6 Adrssen so viel dynamischer sind,
wird es dann noch Listen / sowas wie geoip / ip2loc geben ???
PS: wie ich das sehe, arbeitet www.blocklist.de ... etc auch mit ipv4
oder auch www.stopforumspam.com ... wie ist es fa mit ipv6 ?
Beitrag zuletzt geändert: 26.10.2014 10:57:54 von alg -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage