.htaccess- geschützte Datei mit Parametern aufrufen

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

  • .htaccess- geschützte Datei mit Parametern aufrufen

    Ich möchte eine PHP-Datei, die in einem .htaccess geschützten Verzeichnis liegt aufrufen, ohne die Eingabemaske für Kennwort und Benutzername angezeigt zu bekommen.
    - Die Datei liegt z. B. in den Favoriten des Admin und der will nicht jedesmal die Daten eingeben. -
    Jetzt dachte ich, man könnte dem gespeicherten Link zu dieser Datei vielleicht den Benutzernamen und das Kennwort als Parameter anhängen, also ungefähr so: http://www.domainname.de/geschuetzte...?benutzername='Ich'&kennwort='meinKennwort'

    Funktioniert aber leider so nicht!

    Ist der Ansatz schon falsch, oder nur die Syntax?

    Danke, für jeden Tipp!

  • #2
    Der Passwortschutz mit .htaccess ist eine reine Apache Sache, die Parameter werden von PHP ausgewertet.

    Kommentar


    • #3
      Ist der Ansatz schon falsch, oder nur die Syntax?
      imho schon der Ansatz. Ich wollte das auch mal machen (lange ist's her) und jemand hier (ich glaub es war whasaga) hat mich dann darauf aufmerksam gemacht, dass dies nicht geht, da das eine Apache und das andere PHP ist.
      Wenn du das umsetzen willst, musst du imho auf eine PHP-only Lösung (LogIn) umsteigen. Ruf die Seite mit den Parametern auf, PHP prüft dann ob diese korrekt sind und zeigt im Erfolgsfall den Inhalt der Seite an. Wenn das PW/Username nicht korrekt sind leitet PHP auf die LogIn-Seite weiter. Ich würde da aber noch eine zeitlich begrenzte Session ins Spiel bringen, damit die Links nicht unendlich lange gültig sind.

      Gruss

      tobi
      Gutes Tutorial | PHP Manual | MySql Manual | PHP FAQ | Apache | Suchfunktion für eigene Seiten

      [color=red]"An error does not become truth by reason of multiplied propagation, nor does truth become error because nobody sees it."[/color]
      Mohandas Karamchand Gandhi (Mahatma Gandhi) (Source)

      Kommentar


      • #4
        Danke für die schnellen Antworten.

        Habe ich das richtig verstanden, dass ich die .htaccess-Datei komplett löschen soll.
        Und stattdessen eine PHP-Passwortabfrage starten soll, z.B. mit Passwort-/Benutzerabgleich aus der Datenbank?

        Oder schalte ich besser eine Datei ausserhalb des geschützten Verzeichnisses vor, die die Zugangsdaten als Parameter übergeben mit denen im Quellcode dann angegebenen direkt vergleicht und nur bei Übereinstimmung in den geschützten Bereich weiterleitet?
        Aber dann müßte in diesem Fall dann die .htaccess-Datei ignoriert werden (geht sowas???).

        Der Sinn des ganzen ist eigentlich nur, dass sich unterschiedliche Admins (Admin1, Admin2,...) mit unterschiedlichen Passwörtern in diesen geschützten Bereich einloggen können sollen.
        Alles weitere (z.B. Datenbankeinträge) was diese Admins dann machen, soll gekennzeichnet, also nachher den einzelnen Admins zuzuordnen sein.

        Wenn also z. B. Admin2 einen Beitrag einstellt wird dem Beitrag das Kürzel der Admin2 in der Datenbank hinzugefügt.
        Aber woher weiß das Programm dann allein durch das Login, welcher Admin jetzt agiert?

        Kommentar


        • #5
          Aber woher weiß das Programm dann allein durch das Login, welcher Admin jetzt agiert?
          Entweder weil du den Username als GET Parameter durch die URL schleifst (suboptimal) oder weil du eine Session verwendest wo der Login gespeichert wird. Anhand der Session ID kann dann das Script feststellen, welcher Admin diese Änderung abgeschickt hat.
          Aber dann müßte in diesem Fall dann die .htaccess-Datei ignoriert werden (geht sowas???).
          afaik geht das ned. Die .htaccess müsste komplett weg und die Seiten nur durch PHP geschützt werden
          Gutes Tutorial | PHP Manual | MySql Manual | PHP FAQ | Apache | Suchfunktion für eigene Seiten

          [color=red]"An error does not become truth by reason of multiplied propagation, nor does truth become error because nobody sees it."[/color]
          Mohandas Karamchand Gandhi (Mahatma Gandhi) (Source)

          Kommentar


          • #6
            http://usernameassword@www.example.com/file.php ist glaube ich das, was du suchst. Der aktuell angemeldete Benutzer wird in $_SERVER['PHP_REMOTE_USER'] (oder so ähnlich, ich nutze das nicht) vorgehalten.
            Zuletzt geändert von unset; 12.08.2008, 13:08.
            [FONT="Helvetica"]twitter.com/unset[/FONT]

            Shitstorm Podcast – Wöchentliches Auskotzen

            Kommentar


            • #7
              Du kannst auch direkt über PHP HTTP-Authentifizierung implementieren. Klick: http://de2.php.net/manual/de/features.http-auth.php

              Kommentar


              • #8
                Der Login über die Adresszeile ist sehr wohl möglich, aber die Logindaten kommen, wie von unset schon angedeutet, vor die Adresse, aber nach dem Protokoll. Und wenn man die Smilies ausschaltet sieht sein Link dann so aus: http://usernameassword@www.example.com/file.php
                Gruss
                H2O

                Kommentar


                • #9
                  Original geschrieben von tulpe
                  Oder schalte ich besser eine Datei ausserhalb des geschützten Verzeichnisses vor, die die Zugangsdaten als Parameter übergeben mit denen im Quellcode dann angegebenen direkt vergleicht und nur bei Übereinstimmung in den geschützten Bereich weiterleitet?
                  Aber dann müßte in diesem Fall dann die .htaccess-Datei ignoriert werden (geht sowas???).
                  hört sich machbar an. du kannst zusätzlich einen rechner angeben, der dann ohne authentifizierung "rein" darf, also localhost bzw. 127.0.0.1 wenn der server selbst die datei abruft.
                  siehe auch hier: Eine von 2 Bedingungen (Rechner ODER Name/Passwort) muss stimmen
                  Eine von 2 Bedingungen (Rechner ODER Name/Passwort) muss stimmen:
                  Beispiel:
                  Dateien in einem Verzeichnis sollen Nutzern auf Rechnern der TU Chemnitz sofort zugreifbar sein. Nutzer anderer Rechner müssen sich als URZ-Nutzer authentifizieren (Nutzerkennzeichen + Passwort). Die .htaccess-Datei im Verzeichnis enthält:

                  Satisfy any
                  AuthName "URZ"
                  AuthType Basic
                  AuthDBMUserFile /www/auth/urzpasswd.dbm
                  Require valid-user

                  Order Deny,Allow
                  Deny from all
                  Allow from .tu-chemnitz.de

                  Kommentar


                  • #10
                    Der Login über die Adresszeile ist sehr wohl möglich, ...
                    Afaik ist das aber eine Browsererweiterung und kein Bestandteil des HTTP-Protokolls, im Gegensatz zu FTP.

                    Kommentar


                    • #11
                      Natürlich ist das kein Bestandteil des HTTP-Protokolls, sondern des URI-Standards! Aber wo ist FTP Bestandteil des HTTP-Protokolls?
                      [FONT="Helvetica"]twitter.com/unset[/FONT]

                      Shitstorm Podcast – Wöchentliches Auskotzen

                      Kommentar


                      • #12
                        Original geschrieben von RFC1738
                        3.1. Common Internet Scheme Syntax

                        While the syntax for the rest of the URL may vary depending on the
                        particular scheme selected, URL schemes that involve the direct use
                        of an IP-based protocol to a specified host on the Internet use a
                        common syntax for the scheme-specific data:

                        Code:
                        //<user>:<password>@<host>:<port>/<url-path>
                        Some or all of the parts "<user>:<password>@", ":<password>",
                        ":<port>", and "/<url-path>" may be excluded.
                        Gruss
                        H2O

                        Kommentar


                        • #13
                          Aber wo ist FTP Bestandteil des HTTP-Protokolls?
                          Ne, da habe ich meinen Satz wohl etwas unglücklich formuliert. H2O hat den richtigen Abschnitt zitiert. Und weiter geht es so:
                          A FTP URL follow the syntax described in Section 3.1. If :<port> is omitted, the port defaults to 21.
                          An HTTP URL takes the form:
                          http://<host>:<port>/<path>?<searchpart>
                          Das meine ich mit kein Bestandteil des HTTP-Protokolls, im Gegensatz zu FTP..

                          Kommentar


                          • #14
                            Das von dir zitierte RFC ist aber auch veraltet. Im aktuellen (http://tools.ietf.org/html/rfc3986) kann ich das nicht finden
                            [FONT="Helvetica"]twitter.com/unset[/FONT]

                            Shitstorm Podcast – Wöchentliches Auskotzen

                            Kommentar


                            • #15
                              Original geschrieben von H2O
                              Der Login über die Adresszeile ist sehr wohl möglich, aber die Logindaten kommen, wie von unset schon angedeutet, vor die Adresse, aber nach dem Protokoll. Und wenn man die Smilies ausschaltet sieht sein Link dann so aus: http://username:password@<a href="ht...m/file.php</a>
                              Habe die Tipps versucht umzusetzen.
                              Bekomme allerdings eine Fehlermeldung, dass die Seite nicht gefunden würde.

                              Auch die Server-Variablen
                              $_SERVER['SERVER_NAME'];
                              $_SERVER['PHP_AUTH_USER'];
                              $_SERVER['REMOTE_USER'];
                              $_SERVER['PHP_AUTH_USER'];
                              werden mir nicht augegeben.

                              Dann habe ich mit
                              echo "<pre>";
                              print_r ($_SERVER);
                              echo "</pre>";

                              versucht, dort stehen die Variablen auch nicht drin (habe mich vorher in geschützten Bereich angemeldet).

                              Kommentar

                              Lädt...
                              X