~ GELÖST ~ / IP Weiterleitung

[quote=“server-01”]wenn man auf meine hp geht wird beim betreten der HP die IP - zeit und datum aus sicherheitsgrunden aufgespeichert und nur für mich abrufbar.
aus sicherheitsgründen wird die ip auch beim betreten der seite Gästebuch mitgespeichert, damit bei bösartigen einträgen die IP vorhanden ist.[/quote]
Das ist sie sowieso - bei juristisch relevanten Sachen kann miro in den Serverlogs nachschauen, wenn berechtigte Stellen anfragen.
Und bei nicht relevantem Kleinkram, da nützt dir die IP auch nichts.

Fazit: Wieder mal etwas, was die Auslieferung deiner Seite nur verlangsamt, aber so gut wie überhaupt keinen Nutzen bringt.

Abgesehen davon, dass grösser-/kleiner-Vergleiche bei Strings oftmals nicht das gewünschte ergeben, ist auch die bitweise Verknüpfung der beiden Ergebnisse wenig sinnvoll - vermutlich meinest du ein logisches Und an der Stelle?

Nochmal: [quote=“chrisb”] vermutlich meinest du ein logisches Und an der Stelle?[/quote]

[quote=“server-01”]so ich hab das getestet mit Und und jetzt kommt das:

Parse error: syntax error, unexpected T_STRING in /users/server-01/www/test/index.php on line 13[/quote]
Du hast nicht wirklich das deutsche Wort “Und” in deinen PHP-Code geschrieben, oder …?

Ja, OMG … geh’ bitte Grundlagen lernen!
php.net/manual/de/language.o … ogical.php

PHP kann leider kein Deutsch. Das englische Wort heißt “and”. Bitte Grundlagen lernen :wink:

Wenn überhaupt and. Übrigens wird das logische Und mit && notiert, nicht nur mit einem &.

Ich verstehe sein Deutsch nicht :neutral_face:

Nochmal gaaanz langsam. :p

Du willst echt das dir jemand das ganze macht? :unamused:

vll hilft die kleine funktion hier:

function ip2int($ip) { $ip = explode('.', $ip); return (intval($ip[0]) << 24) + (intval($ip[1]) << 16) + (intval($ip[2]) << 8) + intval($ip[3]); }

wandelt ips in integer um

na wie jede andere funktion auch.
Ich denke die Funktionsweise erklärt sich von selbst.
Man gibt ne IP an, und bekommt stattdessen die IP als eine Zahl.

http://de.php.net/manual/de/language.functions.php

ok thx geht aber ned,…

achja ps
:sun:
wie kannst du es wagen in münchen zu wohnen ich schau k11 ( sat1 ) war von österreich nach deutschland angereißt 6 stunden fahr und standen vor der landshuter allee… ich will da nochmal hin …[/quote]

Bitte was?

[quote=“server-01”]bitte helft mit ich möchte dort die ip eingeben und dann umleitung zu z.b. sperrseite.de
ansonsten zu okay.at

bittee!
es is ur wichtig[/quote]

Du hast eine Super 1A perfekte Lösung von Balmung bekommen. btw, du kannst keine Strings mit größer kleiner vergleichen (zumindest nicht sinnvoll).
Die Funktion gibt dir die IP als “Zahl” aus. Du speicherst dein IPs dann auch als Zahlen ab.
Ist es wirklich so schwer zu denken? :astonished:

[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.

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

?>[/code]

Das sollte funktioneren.

Die Kommentare ("// blabla" oder “/" bis "/”) kannst du entfernen.
Ich hab’ sie geschrieben, damit du was lernst. ^^

Gewöhne dir doch bitte endlich mal an, nachvollziehbare Problembeschreibungen zu liefern!

Wir wissen nicht, was du als deine IP eingegeben hast, und wie du das Script noch an deine Bedürfnisse angepasst hast - also zeig das bitte her.

Wenn ich die von dir genannten IPs im Script einsetze, dann wird der “Location: $passed”-Teil der IF-Abfrage ausgeführt.

Damit sind wir wieder da, wo wir vorher schon waren:

Was haben denn deine Kontrollausgaben/dein Debugging ergeben?

Etwas, ohne das man gar nicht von “Programmieren” reden kann.

Kontrollausgaben machen heisst, nicht nur annehmen, dass die Variablen des Scriptes bestimmte Inhalte hätten - sondern dies zu überprüfen, in dem man sie an geeigneter Stelle im Script ausgibt.

Sry, ich war gestern nicht zu sehr aktiv im Forum.
In meinem Skript solltest du eingeben, welche IPs erlaubt sind.

Ich hab es doch alles ausführlich nach dem // beschrieben:

$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.
In diesem Fall:
Alle IP zwischen 0.0.0.0 und 255.255.255.255 sind erlaubt.

Aber wenn du das Gegenteil willst, dann hier:

[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.

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

?>[/code]
Wenn du jetzt meinst, dass das das gleiche Skript sei: Nein da irrst du dich.

Du müsstest einfach nur $passed in $denied, und $denied in $passed umschreiben.

[quote=“server-01”]eins noch:
Wie kann ich mehrere IP adressen eingeben?[/quote]
Du meinst, mehrere IP-Bereiche im Script hinterlegen, für die der Zugriff verweigert/erlaubt werden soll?

Bspw., in dem du die jeweilige Unter- und Obergrenze zusammen in einem zweidimensionalen Array ablegst - und beim Prüfen dieses dann durchläufst, und schaust, ob die zu prüfende IP zwischen den Grenzen des aktuellen “Datensatzes” liegt.

Erwarte jetzt aber bitte keinen fertigen Code von mir - davon hast du in diesem Thread schon genug “geschnorrt”.
Beschäftige dich mit den Grundlagen von PHP, dann kannst du sowas bald selber umsetzen.

[quote=“chrisb”]
Beschäftige dich mit den Grundlagen von PHP, dann kannst du sowas bald selber umsetzen.[/quote]

Außerdem kannst du mir nicht ernsthaft erzählen, dass bei dem und dem PHP Lehrgang keine Arrays behandelt werden. Such dir ein x-beliebiges Tutorial aus.

ByTheWay, du kannst es schon testen. Es wird wohl rauskommen, dass es dann gar nicht mehr funktioniert. Und jetzt sei mal nicht so faul, und schlag selber nach.

Wenn du eine Leseschwäche hast und deshalb keine PHP Tutorials lesen kannst, dann sag das bitte. Und darum jetzt noch mal. Nein.