PHP: Einzelne Dateien vor Aufruf durch bestimmte IP schützen

  • Ich hätte eine dringende Frage an euch und hoffe das ihr mir helfen könnt. Ich habe ein Verzeichnis mit an die fünfzig Dateien, und bei zwei .php Dateien möchte ich, das sie sich von einer bestimmten IP aus nicht aufrufen lassen. Wie könnte man das möglichst auch in PHP realisieren, weil mit .htaccess kann man nur ganze Verzeichnisse schützen. Und wegen ein paar Nervensägen ist es mir zuviel aufwand, die zwei Dateien in ein Unterverzeichnis zu verschieben und dann mit .htaccess zu schützen.


    Alternativ darf es auch eine .php Datei sein, die die eine IP an eine datei.php verweist und alle anderen IPs an richtige_datei.php wenn das einfacher ist.

  • Geht auch mir ner .htaccess wenn es dir Erlaubt wird die Optionen zu nutzen


    Code
    <Files 1.php 2.php>
    Order allow, deny
    Allow from all
    Deny from 192.168.1.1
    </Files>


    Die IP & die Dateinamen natürlich ersetzen.


    ~~~ root ~~~

  • Danke, dann werd ich das mal versuchen, auch wenn ich fast glaube das es bei meinen Provider nicht klappen wird.

  • schreibe einfach folgendes an den Anfang (nach "<?php")...

    Code
    if ($_SERVER['REMOTE_ADDR']=="HIER DIE ABZUWEISENDE IP EINTRAGEN!")
    die ("du hast hier nix zu suchen!");

    Das sorgt dafür, dass die Verarbeitung des Scripts im Falle einer Übereinstimmung abgebrochen wird...


    Gruss - 3dc

  • Wenn ich mit nicht irre, besteht doch auch die Möglichkeit, einzelne PHP-Dateien per htaccess zu schützen, wobei dies nicht in der .htaccess eingetragen wird, sondern im jeweiligen PHP-File?

  • Die beiden Möglichkeiten sind gut, die von 3dc erscheint mir aber einfacher. Das mit der .htaccess direkt bringt leider Code 500 wie erwartet.

  • Nur der Vollständigkeit halber: Das was Carsten meinte, und worauf ich den Link gesetzt habe ist eine Möglichkeit Basic-Authentication (welches im HTTP-Protokoll definiert ist) direkt auss PHP zu realisieren. Das hat übrhaupt gar nix mit .htaccess zu tun (nur insofern, dassman vergleichbares auch alternativ mit einer .htaccess Datei hätte realisieren können).


    Es wäre also egal ob dein Hoster .htaccess erlaubt oder nicht. Einzige Voraussetzung ist, dass PHP als Modul und nicht als CGI läuft, das ist aber bei den meisten Hostern mittlerweile gegeben.


    Aber wenn die andere Lösung für dich funktioniert, dann würd ich auch dabei bleiben. ;)

  • Zitat

    Original geschrieben von root
    Geht auch mir ner .htaccess wenn es dir Erlaubt wird die Optionen zu nutzen

    Das Leerzeichen in der "Order" Zeile führt übrigens zumindest meinem Apache (1.3.27) zu einem Error 500. Ohne das Leerzeichen funktionierts...:

    Code
    <Files 1.php 2.php>
    [b]Order allow,deny[/b]
    Allow from all
    Deny from 192.168.1.1
    </Files>

    Gruß,


    Henning.

    ________________________

  • Zitat

    Original geschrieben von XNeo
    Das Leerzeichen in der "Order" Zeile führt übrigens zumindest meinem Apache (1.3.27) zu einem Error 500. Ohne das Leerzeichen funktionierts...:

    Code
    <Files 1.php 2.php>
    [b]Order allow,deny[/b]
    Allow from all
    Deny from 192.168.1.1
    </Files>

    Gruß,


    Richtig, gehört da nicht hin das Leerzeichen. Kleiner Fehler mit großer Wirkung. Gut das du es gesagt hast :) Da sieht man mal wieder das selbst ein root Fehler macht *g*


    ~~~ root ~~~

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!