PHP übernimmt login & leitet autom. in geschützten Ordner weiter (htaccess)

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

  • PHP übernimmt login & leitet autom. in geschützten Ordner weiter (htaccess)

    Hallo miteinander,

    ich habe mir auf meinen Webserver mehrere Bilder-Gallerien erstellt, die alle in separate Verzeichnisse liegen. Diese sind jeweils durch eine .htaccess Datei geschützt auf der nur bestimmte Benutzer Zugriff haben.

    Bsp:
    /var/www/2005_geburtstag_xxx/ -> Benutzerzugriff: nur freunde
    /var/www/2005_tennis_xxx/ -> Benutzerzugriff: nur Tenniscollegen etc.

    Da es sich mittlerweile um sehr viele separate Bilder-Gallerien handelt und es ziemlich umständlich ist jedem Benutzer diverse OrdnerPfade mitzuteilen, wollte ich eine dynamische Weiterleitung nach erfolgreicher Passworteingabe realisieren.

    Der Server soll dann anhand der Benutzereingaben von der Hauptseite ermitteln auf welche Ordner Person xyz Zugriff hat und dann dorthin automatisch weiterleiten, sodass sich keiner mehr einen bestimmten OrdnerPfad (www.domain.de/ordner_xyz) merken braucht sondern nur noch die reine URL.

    Es ist ja möglich direkt über die Adresszeile in einem .htaccess geschützten Bereich zu gelangen mit "http://usernameasswort@www.domain.de/geschützterbereich"

    Jetzt könnte ich ja über ein PHP-Login-Formular auf der Startseite den Benutzer dazu auffordern seine Daten einzugeben. Diese werden dann ausgelesen ... EingabeName mit DateiName aus Datei verglichen (in ihr steht dann der Benutzername und der Subpfad zum geschützten Bereich) und aus der Datei den passenden Pfad ausgelesen.

    Ist der Login samt Passwort korrekt so wird anhand der Daten aus der Tabelle eine neue URL generiert die wie oben schon beschrieben so aussieht: http://username:passwort@<a href="ht...n.de/pfad/</a>

    Das Script welches ich mir zusammengebastelt habe ist folgendes:


    PHP-Code:
    <?php

    $pfad 
    "";
    define("SUBDIR""/etc/apache2/pwd/.subdir");

    // variable pruefen
    if (!isset ($name)) { $name ""; }
    $name strip_tags ($name);

    // .subdir oeffnen und zeilenweise einlesen
    $fp fopen(SUBDIR"r");
    while (
    $zeile fgets($fp200))
    {      
       
    //zeile in user, ":", pfad zerlegen
       
    ereg ("(.*)(:)(.*)"$zeile$passelements);   

       
    $singleuser $passelements[1];
       
    $singledir $passelements[3];

       if (
    $name == $singleuser)
       {
          
    $pfad $singledir;
       }
    }
    fclose ($fp);
    clearstatcache();

    //url zusammenstellen
    $hh = @fopen("http://{$_SERVER['PHP_AUTH_USER']}:{$_SERVER['PHP_AUTH_PW']}".@{$_SERVER['SERVER_NAME']}$pfad", "r");

       if (!
    $hh) authenticate(); // usual header WWW-Authenticate ...
         fclose(
    $hh);
    ?>
    Leider funktioniert es mehr schlecht als recht und ich bekomme immer einen Fehler aus der URL-zusammenstelung?

    Für jede Hilfe bin ich sehr Dankbar

    greetz

    der Doc

  • #2
    /edit: Hab mich vertan und lösch die falschinfo lieber gleich...

    /edit zum 2ten: Hatte doch recht, poste es aber nicht mehr weils wahsaga eh so schön erklärt
    Zuletzt geändert von Daniela; 17.03.2006, 16:02.

    Kommentar


    • #3
      Wie? Wenn ich diese URL aber oben eingebe funktioniert der Login mit Weiterleitung bei mir auf dem Server.
      ... und unter PHP kann man doch URL's weiterleiten und an den Browser übergeben.

      Auch wenn diese Technik alt sein mag und vielleicht auch nicht die eleganteste Lösung ist so funktioniert sie doch noch.

      Und die URL-Übergabe habe ich von dieser Seite: http://php3.de/manual/de/features.http-auth.php
      ... User Contributed Notes "marco dot moser at oltrefersina dot it" vom 09-Jan-2006 03:29

      ... also doch noch aktuell und funktionierend.

      Wer kann mir denn helfen was an dem Script falsch ist?
      Besten Dank im Voraus

      greetz

      der Doc

      Kommentar


      • #4
        Spannendes Thema !
        Wie funktioniert das genau mit http://usernameasswort@[url]www.domain.de/pfad/ ?
        Kann ich mit dem fopen erst die Berechtigung prüfen und danach mit einem Header (Location: ... ) in den geschützen Bereich gehen ?

        Kommentar


        • #5
          In der Theorie sollte es so funktionieren ... ja

          Da in jedem Ordner bei mir aber eine andere .htaccess steht will ich erst den Ordnerwechsel und dann die Überprüfung.

          Nur leider scheitert es bei mir am Fachwissen :-(

          Kommentar


          • #6
            soll denn der fopen den Ordnerwechsel machen ?

            Kommentar


            • #7
              Daniela, dein Kommentar war schon richtig.

              Solche URLs mit Username/Passwort waren für HTTP nie offiziell definiert, die kommen vom FTP.
              Sie haben trotzdem lange Zeit "funktioniert" - aber da sie u.a. von Phishern zum verschleiern der realen Adresse benutzt wurden, "funktionieren" sie nun in einem IE auf aktuellem Patchlevel nicht mehr. Andere Browser fragen den Benutzer erst, ob er eine Adresse mit Logindaten aufrufen will.

              Kann ich mit dem fopen erst die Berechtigung prüfen und danach mit einem Header (Location: ... ) in den geschützen Bereich gehen ?
              Jein.

              Beim fopen mit Username/Passwort wirst du zwarherausfinden können, ob "dein PHP sich einloggen kann", aber per Location-Header forderst du wiederum den Client auf, einen URL aufzurufen - also wieder siehe oben.
              I don't believe in rebirth. Actually, I never did in my whole lives.

              Kommentar

              Lädt...
              X