Website nur bestimmten Ländern zugänglich machen?

  • Das wäre extrem umständlich.

    Probiere es mal mit der php.ini aus und wenn das nicht klappt, setzte dich mal mit dem Support von 1&1 in Verbindung, vielleicht können die dir helfen.

  • Hi, wunderbar, habe mich getraut ohne zu fragen einfach die php.ini hochzuladen.
    Ins Hauptverzeichnis hats erst nicht geklappt. Aber in das Verzeichnis wo ich die Dateien vom Skript habe.
    Funktioniert nun erstmals ohne Error:-)

    Vielen Dank! VG

    PS: Großen Respekt vor dem Skript synaptic.
    Es ist der Hammer.

    2 Mal editiert, zuletzt von Gast 1 2 3 4 (10. Juli 2012 um 15:57)

  • Es geht bei 1und1.. bin auch da ;) Du machst damit übrigens auch nichts irgendwie "illegales"

    Super Sache :) Das freut mich, dann bin ich ja beruhigt danke :D


    synaptic: Kannst du mir das bitte nochmal erklären mit dem Fallback was da genau passiert?
    Was zum Beispiel der Unterschied wäre wenn ich statt DE EN hineinschreibe?

    Vielen Dank für alles.

    Einmal editiert, zuletzt von Gast 1 2 3 4 (10. Juli 2012 um 17:47)

  • also erstma sorry, ich hab den code heute zur veranschaulichung einfach runtergeschrieben, während der arbeit und nicht auf fehlerfreiheit geachtet und auch nicht dazugeschrieben, dass es ungeprüfter beispielcode ist.

    der fallback ist nichts anderes, als eine ausgabe, die nur dann stattfindet, wenn alle services nicht funktionieren (was bei 3 services auch eigentlich nicht so schnell passieren dürfte)

    dieser fallback wird von dir definiert und dient eben dazu, dass die weiterleitung funktioniert und das script nicht einfach stirbt

    und nein du kannst da auch EN reindengeln, statt DE

  • und nein du kannst da auch EN reindengeln, statt DE


    Ich hätt's so gemacht:

    PHP
    function getCountry($strFallBack = 'DE')


    So kannst du ja bei Bedarf den Fallback beim Aufruf ändern ;)

  • synaptic: Kein Thema. Eher danke, so hatte ich dann gleich noch mehr Lerneffekt daraus :)
    Außerdem hat es sehr weitergeholfen. Besten Dank für deine Hilfe.

    Achso. Also wenn ich DE reindengle (:D - ok das ist ja schon drin aber sagen wir mal DE) und alle 3 Services würden wirklich mal failen, wäre es so, dass DE zur Ausgabe käme und dies quasi sich so verhalten würde, als wäre der Besucher der Website aus DE (auch wenn er aus USA in Wirklichkeit ist) und er würde dann quasi auf die Seite weitergeleitet werden/die Seite wäre verfügbar, sofern dies in dem Array bestimmt ist + der If-Anweisung? Sorry dass ich so 'dumm' nachfrage, aber mit dem Fallback das habe ich immer noch nicht ganz verstanden... Zumindest nicht dass ich es dann falsch verstanden habe :confused:

    @Bandit: Besten Dank für die Hilfe und den zusätzlichen Tipp.

    :)

    This board rocks

  • ja das haste richtig erklärt

    google doch einfach mal nach der begriffs-definition für fallback...

    und JA du musst die weiterleitung für deinen fallback ja auch definieren, angenommen du hast SRB (serbien) als fallback und berücksichtigst dafür aber keine lösung für die weiterleitung, tritt das hier in kraft:

    PHP
    else
      Header "Location: http://webseitenname.domainendung/locked";
  • Ah, wunderbar, das freut mich. Auch danke für die abschließende Antwort und Erklärung :)

    Sehr gut zu wissen :D

    Das habe ich schon vor ein paar Tagen gegoogelt (ca. 3 Minuten:D), aber dadurch war es mir noch nicht ganz klar geworden, sry!
    Aber jetzt finally denk ich... Hammer:D

    Danke danke.

  • Hi zusammen,

    hätte da noch 'ne Rückfrage...
    Da ich jetzt mal dazugekommen bin das ganze mit einem Proxy-Server zu testen.

    Die Länderweiterleitungen zu den im Array definierten erlaubten Ländern funktionieren auch wunderbar.

    Nur wenn ich mit dem Proxy aus einem "unerlaubten" Land surfe, macht er keine Weiterleitung auf die
    angegebene Seite, sondern lässt die Seite einfach leer :/

    ??

    Habe auch 3 mal überprüft, ob die lock_test.htm tatsächlich mit hochgeladen ist und Inhalt enthält und das tut sie.
    Hmm...


    Edit:
    Da ich so viel Ahnung von PHP habe (... *räusper*) habe ich es auch mal so probiert:

    else {
    header("Location: lock_test.htm");
    }

    Aber Ergebnis natürlich (!?) das gleiche.

    MfG

    Einmal editiert, zuletzt von Gast 1 2 3 4 (12. Juli 2012 um 14:29)

  • Genau deshalb mag ich diese Schreibweise nicht! Wenn man das anders macht, fällt sofort auf, wozu das else gehört:


    Und so wär's richtig:

  • Und noch ein Tipp: schreibe nach header immer ein exit:

    PHP
    if ($strIsoCountry == 'DE') 
    {
      header("Location: de_test.htm");
      exit;
    }


    Das spielt in diesem Falle zwar keine große Rolle, aber man sollte sich darüber klar sein, dass das Script trotz header bis zum Ende ausgeführt wird. Will man wegen eines Fehler weiterleiten, würde trotzdem das Script weiterlaufen und das kann manchmal unangenehme Folgen haben.

    Außerdem sollte man bei header eine vollständige URL nehmen, sprich http://www.blablabla.irgendwo/seite.html

  • Hallo zusammen,

    habe folgenden Skript über dem HTML-Bereich einer PHP-Seite...:

    Ich checke nicht, weshalb er mir die Page nicht anzeigt (bleibt einfach weiß)....

    ?

    Grüße & Vielen Dank für Hilfe

  • Richtig debuggen

    1.Man bemerkt, dass ein Skript nicht das tut, was es soll.
    2.Man schreibt an den Anfang des Scriptes die Zeile: error_reporting(E_ALL);
    3.Man verwendet ini_set('display_errors', true); damit die Fehler auch angezeigt werden.
    4.Man versucht, die Stelle die daran Schuld sein kann, schonmal einzugrenzen. Falls dies nicht geht, wird zunächst das komplette Skript als fehlerhaft angesehen.
    5.An markanten Stellen im Skript lässt man sich wichtige Variableninhalte ausgeben und ggf. auch in bedingten Anweisungen eine kurze Ausgabe machen, um zu überprüfen, welche Bedingung ausgeführt wurde. Wichtig bei MySQL Fehlern (...not a valid MySQL result resource...): mysql_error() verwenden oder Abfrage ausgeben und zb mit phpmyadmin testen.
    6.Schritt 5 wird so lange wiederholt, bis Unstimmigkeiten im Skript auffallen
    7.Damit hat man das Problem (Unstimmigkeit) gefunden und kann versuchen diese zu beheben. Hierzu dienen dann die PHP-Dokumentation und andere Quellen als Ratgeber.
    8.Lässt sich das konkrete Problem trotzdem nicht beheben, kann man in Foren um Rat fragen.
    9.Das Programm läuft und man kann die Debug-Ausgaben wieder entfernen.

  • Danke, aber habe es oben eingefügt:

    PHP
    <?php
    
    
    error_reporting(E_ALL);
    ini_set('display_errors', true);
    function getCountry(){
        $intIp = $_SERVER['REMOTE_ADDR'];
        $strFallBack = 'DE';
    ....

    Seite weiterhin weiß.

  • Ja toll, dann bist du bis Punkt 3 von "Richtig debuggen" gekommen, aber wenn mich nicht alles täuscht, sollte man bis mindestens Punkt 6 alleine weitermachen!

  • Ich kriege es aber leider nicht hin :( Wenn der mir nicht mal anzeigt wo der Fehler ist :(