Connie: .htaccess auf PHP-Datei mit Parameter?

hallo!

Ich weiß wie ich einer .htaccess-Datei regeln kann, dass bei Aufruf einer bestimmten Datei ein Passwort verlangt wird.

.htaccess-Datei fuer test.php

AuthType Basic
AuthName "GEHT DOCH"
AuthUserFile "/home/xxx/.htpasswds/verzeichnis/passwd"
<Files test.php>
require valid-user
</Files>

nun habe ich aber das Problem, dass ich den Aufruf der Datei "test.php" zulassen möchte, aber dann nicht, wenn sie mit dem Parameter "?x=abc" aufgerufen wird

das gelingt mir  nicht

.htaccess-Datei fuer test.php?x=abc

AuthType Basic
AuthName "GEHT DOCH"
AuthUserFile "/home/xxx/.htpasswds/verzeichnis/passwd"
<Files test.php?x=abc>
require valid-user
</Files>

es wird immer die Datei "test.php" aufgerufen, denn "?" wird ja als Platzhalter betrachtet

deshalb meine Frage: ist es vielleicht möglich, diese Datei statt über den Dateinamen direkt mit RegEx zu schützen?

<Files ~ ".(gif|jpe?g|png)$"> <= so vielleicht

und wenn ja, wie ginge dann diese Directive?

habt Ihr einen Tip für mich?
Merci im Voraus!

  1. Hallo Connie,

    Ich weiß wie ich einer .htaccess-Datei regeln kann, dass bei Aufruf einer bestimmten Datei ein Passwort verlangt wird.

    .htaccess-Datei fuer test.php

    AuthType Basic
    AuthName "GEHT DOCH"
    AuthUserFile "/home/xxx/.htpasswds/verzeichnis/passwd"
    <Files test.php>
    require valid-user
    </Files>

    nun habe ich aber das Problem, dass ich den Aufruf der Datei "test.php" zulassen möchte, aber dann nicht, wenn sie mit dem Parameter "?x=abc" aufgerufen wird

    Wenn du PHP zur Verfügung hast, warum verwendest du dann nicht header() für die HTTP-Authentifizierung?

    Grüße aus Barsinghausen,
    Fabian

    --
    "It's easier not to be wise" - < http://www.fabian-transchel.de/kultur/philosophie/ialone/>
    1. Hi Fabian,

      Wenn du PHP zur Verfügung hast, warum verwendest du dann nicht header() für die HTTP-Authentifizierung?

      Ist nur mit PHP als Modul Version möglich, bei der von Providern oft verwendeten CGI Version geht das nicht. An der Stelle ließe sich mit mod_auth_mysql Abhilfe schaffen, haben viele große Provider aber nicht installiert.

      MfG, Dennis.

      --
      Mein SelfCode: ie:{ fl:( br:> va:) ls:[ fo:) rl:( n4:# ss:) de:] js:| ch:{ sh:| mo:} zu:|
      Zwei Dinge sind unendlich, das Universum und die menschliche Dummheit, aber bei dem Universum bin ich mir noch nicht ganz sicher. (Albert Einstein)
      1. Hallo Ihr Beiden,

        ja, das weiß ich. Ich habe im Script folgendes:

        if($_GET['x'] == "xxx") {
          header("HTTP/1.0 412 Precondition Failed");
                 header("Status: 412 Precondition Failed");
                 exit;
           } // end refererlog

        "xxx" is natürlich nur ein Beispiel

        if($_GET['x'] == "xx") {
         // header("HTTP/1.0 412 Precondition Failed");
        //       header("Status: 412 Precondition Failed");
           header("HTTP/1.0 404 Not Found");
         header("Status: 404 Not Found");
               exit;
        }

        412 produziert eine leere Seite, 404 aber auch

        und wissen tät ich schon gerne, ob es nicht doch in .htaccess irgendwie geht..

        1. Hi Connie,

          412 produziert eine leere Seite, 404 aber auch

          Logisch - du sendest ja auch keinen Content mit. Die Antwort deines Scripts auf den Request besteht doch nur aus dem Header mit dem Statuscode - und eigentlich sollte dann noch der Body mit dem ErrorDocument folgen.

          und wissen tät ich schon gerne, ob es nicht doch in .htaccess irgendwie geht..

          Möglich - aber ich wüsste nicht wie.  :(

          So long,

          Martin

          1. Logisch - du sendest ja auch keinen Content mit. Die Antwort deines Scripts auf den Request besteht doch nur aus dem Header mit dem Statuscode - und eigentlich sollte dann noch der Body mit dem ErrorDocument folgen.

            ja, das ist mir bewusst, vielleicht binde ich danach noch die 404-Seite ein, dann sieht das so aus als ob ;=)

            merci für die Antworten

      2. Γειά σου, Dennis!

        Wenn du PHP zur Verfügung hast, warum verwendest du dann nicht header() für die HTTP-Authentifizierung?

        Ist nur mit PHP als Modul Version möglich, bei der von Providern oft verwendeten CGI Version geht das nicht.

        In den User Contributed Notes der PHP-Manual-Seite HTTP-Authentifizierung mit PHP findet sich eine (von mir noch unerprobte) Möglichkeit, über eine Zeile .htaccess Zugriff auf die bei der Autorisierung vom Client gesendeten Daten zu erhalten.

        Wenn das Beispiel 34-1 der genannten Seite auf einem Server mit PHP als CGI-Version ausgeführt wird, passiert folgendes:

        • Der Client sendet einen Request an den Server, URI ist der des Scripts.
        • Das Script sendet einen WWW-Authenticate- und einen Unauthorized-Header, weil die Variable $_SERVER['PHP_AUTH_USER'] nicht gesetzt ist.
        • User füllt den erscheinenden Dialog aus, klickt auf Ok und der Client sendet den Request erneut, diesmal aber mit Authentifikationsinformationen.
        • Das Script sendet wieder einen WWW-Authenticate- und einen Unauthorized-Header, weil es den User-Input nicht sieht (!isset($_SERVER['PHP_AUTH_USER'])).
        • usw.

        Damit dem Script nun bezüglich des User-Inputs "die Augen geöffnet werden", wird in den User Contributed Notes vorgeschlagen, eine .htaccess-Datei anzulegen und diese mit einer Rewrite-Rule (RewriteRule .* - [E=REMOTE_USER:%{HTTP:Authorization},L]) zu befüllen, die die vom Client gesendeten Authentifizierungsinformationen dem Script zur Verfügung stellt.

        Aber, wie bereits gesagt, ich habe das noch nicht getestet, ob das so funktioniert. Könnt ihr ja mal machen. ;-)

        Пока!
        Sven aus Bonn

        --
        Do it yourSELF! ;-)
        Selfcode: ie:% fl:( br:> va:} ls:[ fo:) rl:( n4:{ ss:| de:> js:| ch:) mo:} zu:) - Selfcode dekodieren - Selfcode-Info
        Athen rückt in Sichtweite. ;-)