PHP_AUTH - Probleme beim Zugriff auf Variablen

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • PHP_AUTH - Probleme beim Zugriff auf Variablen

    Hallo,
    An diesem Problem zimmere ich nun schon seit Stunden herum. Vielleicht kann mir jemand aus der Misere helfen?

    Ich habe einen Login mit PHP_AUTH geschrieben. Dieser hat bisher auch auf meinem Server funktioniert und ist auch absolut notwendig. Nach einem Serverwechsel klappt es nun überhaupt nicht mehr. Hier nur eine simple Beispielabfrage:

    PHP-Code:
    if($PHP_AUTH_USER==NULL || $PHP_AUTH_PW==NULL){
        
    header("WWW-Authenticate: Basic realm=\"Login zur Website-Verwaltung\"");
        
    header("HTTP/1.0 401 Unauthorized");
    }else{
        echo 
    $PHP_AUTH_USER;
        echo 
    $PHP_AUTH_PW;

    Egal was ich eingebe, ich bekomme immer nur weitere Passwort-Abfragen.
    Auch wenn ich zur Abfrage $_SERVER['PHP_AUTH_USER'] und $_SERVER['PHP_AUTH_PW'] nutze erziele ich kein Ergebnis.

    Testen kann man obigen Code hier !
    Eine PHP-Info-Datei zum Server gibt es hier !

    Hat jemand eine Idee? Ich habe schon bei php.net nach Informationen gestöbert - bin jedoch auch nicht fündig geworden. Kann es daran liegen, dass PHP als CGI läuft?

    Verzweifelte Grüße
    Sebi

  • #2
    Ähm, du hast im Manual geguckt und den ersten Satz übersehen?

    The HTTP Authentication hooks in PHP are only available when it is running as an Apache module and is hence not available in the CGI version.

    Kommentar


    • #3
      *kopf vor die wand schlag*

      Sorry!!

      Kommentar


      • #4
        Ok, hier die Lösung wie es dennoch mit PHP als CGI funktioniert:

        erst eine .htaccess anlegen:

        Code:
        <IfModule mod_rewrite.c>
           RewriteEngine on
           
           RewriteCond %{QUERY_STRING} ^$
           RewriteRule ([^\s]+).php$ $1.php?BAD_HOSTING=%{HTTP:Authorization}
           
           RewriteCond %{QUERY_STRING} ^(.+)$
           RewriteRule ([^\s]+).php $1.php?%1&BAD_HOSTING=%{HTTP:Authorization}
        </IfModule>
        dann folgenden Code an den Anfang deines php-dokuments stellen:

        PHP-Code:
        if((empty($_SERVER['PHP_AUTH_USER'])
        or empty(
        $_SERVER['PHP_AUTH_PW']))
        and isset(
        $_REQUEST['BAD_HOSTING'])
        and 
        preg_match('/Basic\s+(.*)$/i'$_REQUEST['BAD_HOSTING'], $matc))
        {
        list(
        $_SERVER['PHP_AUTH_USER'], $_SERVER['PHP_AUTH_PW']) = explode(':'base64_decode($matc[1]));


        Und voila: Es funktioniert!!
        Have fun!

        Kommentar

        Lädt...
        X