Hermann: PHP, MYSQL und htaccess

moin,

bitte keine Lacher zu meiner Frage - ich habe noch nicht die größte Ahnung von PHP, komme aber schon ganz gut damit rum.

Mein Problem - kaue seit 18 Stunden drauf rum.

  • htaccess schützt ein Verzeichnis (funktioniert)
  • mysql hat die Benutzerdaten und Kennwörter (funktioniert)
  • htaccess Daten und mysql Daten sind tatsächlich identisch (zigmal geprüft)

Was muß ich jetzt wie in das PHP - Script eintragen, damit ich nicht zur erneuten Eingabe von Benutzername und Kennwort (Benutzer hat sich schon einmal aufgrund einer Abfrage über die Datenbank authentifiziert).

Wer hilft mir, bevor mein Kopf auf der Tastatur aufschlägt.

Danke

Hermann

  1. Hi,

    Was muß ich jetzt wie in das PHP - Script eintragen, damit ich nicht zur erneuten Eingabe von Benutzername und Kennwort (Benutzer hat sich schon einmal aufgrund einer Abfrage über die Datenbank authentifiziert).

    Basic/Digest Authentication funktionieren durch Benutzerinteraktion. Es ist nicht erwünscht, diesen Mechanismus zu umgehen; und wenn PHP nicht zufällig als Servermodul installiert ist, ist es damit auch unmöglich.

    Cheatah

    --
    X-Will-Answer-Email: No
    1. Hi,

      Was muß ich jetzt wie in das PHP - Script eintragen, damit ich nicht zur erneuten Eingabe von Benutzername und Kennwort (Benutzer hat sich schon einmal aufgrund einer Abfrage über die Datenbank authentifiziert).

      Basic/Digest Authentication funktionieren durch Benutzerinteraktion. Es ist nicht erwünscht, diesen Mechanismus zu umgehen; und wenn PHP nicht zufällig als Servermodul installiert ist, ist es damit auch unmöglich.

      Cheatah

      Hi,

      PHP ist als Servermodul installiert, trotzdem mache ich wohl irgendetwas falsch.
      Übrigens, wenn ich Benutzername und Kennwort eimal (1x) eigegeben haben fluppt die Sache anschließend einwandfrei - dann hat sich der Browser ja die Variablen gemerkt (oder!?) Diese Variablen müßte man doch verwenden können - oder ist das zu einfach gedacht!?

      Danke

      Hermann

      1. Hi,

        Was muß ich jetzt wie in das PHP - Script eintragen, damit ich nicht zur erneuten Eingabe von Benutzername und Kennwort (Benutzer hat sich schon einmal aufgrund einer Abfrage über die Datenbank authentifiziert).

        Basic/Digest Authentication funktionieren durch Benutzerinteraktion. Es ist nicht erwünscht, diesen Mechanismus zu umgehen; und wenn PHP nicht zufällig als Servermodul installiert ist, ist es damit auch unmöglich.

        Cheatah

        Hi,
        PHP ist als Servermodul installiert, trotzdem mache ich wohl irgendetwas falsch.
        Übrigens, wenn ich Benutzername und Kennwort eimal (1x) eigegeben haben fluppt die Sache anschließend einwandfrei - dann hat sich der Browser ja die Variablen gemerkt (oder!?) Diese Variablen müßte man doch verwenden können - oder ist das zu einfach gedacht!?

        Danke

        Hermann

        Hi,
        noch ein Nachtrag (Gedanke / Frage). Wohin schreibt denn der Browser bei der Eingabe den Benutzernamen und das Kennwort, wenn er an htaccess "sendet". Ist es nicht möglich, daß mit PHP zu simluieren - von mir aus auch ohne mysql.

        Danke Hermann

        1. Hi,

          Wohin schreibt denn der Browser bei der Eingabe den Benutzernamen und das Kennwort, wenn er an htaccess "sendet".

          der Client sendet an den Server, nicht an .htaccess - _wo_ nun der Server die Basic bzw. Digest Authentication konfiguriert bzw. implementiert hat, ist dem Client herzlich egal; er könnte die Information auch gar nicht verwerten. Die Eingaben werden im Arbeitsspeicher gehalten und per in RFC 2617[1] definierten Header bei jedem für den authetifizierten Bereich zutreffenden Request mitgesendet.

          Ist es nicht möglich, daß mit PHP zu simluieren - von mir aus auch ohne mysql.

          Die Datenbank bzw. allgemein Datenhaltung hat ebenfalls nichts damit zu tun. Wenn PHP als Servermodul installiert ist, kannst Du selbst für das Parsing der HTTP-Header und die richtigen Responses (Stati 401 und 403) sorgen - im Archiv findest Du Beispielcodes bzw. Links zu Sites, auf denen das Thema behandelt ist.

          Cheatah

          [1] http://www.ietf.org/rfc/rfc2617.txt

          --
          X-Will-Answer-Email: No
          1. Hi,

            Wohin schreibt denn der Browser bei der Eingabe den Benutzernamen und das Kennwort, wenn er an htaccess "sendet".

            der Client sendet an den Server, nicht an .htaccess - _wo_ nun der Server die Basic bzw. Digest Authentication konfiguriert bzw. implementiert hat, ist dem Client herzlich egal; er könnte die Information auch gar nicht verwerten. Die Eingaben werden im Arbeitsspeicher gehalten und per in RFC 2617[1] definierten Header bei jedem für den authetifizierten Bereich zutreffenden Request mitgesendet.

            Ist es nicht möglich, daß mit PHP zu simluieren - von mir aus auch ohne mysql.

            Die Datenbank bzw. allgemein Datenhaltung hat ebenfalls nichts damit zu tun. Wenn PHP als Servermodul installiert ist, kannst Du selbst für das Parsing der HTTP-Header und die richtigen Responses (Stati 401 und 403) sorgen - im Archiv findest Du Beispielcodes bzw. Links zu Sites, auf denen das Thema behandelt ist.

            Cheatah

            [1] http://www.ietf.org/rfc/rfc2617.txt

            Hi Cheatah,

            danke für die Info, aber das wird dann doch etwas zu hoch für mich. Dann muss ich mir eben insgesamt etwas anderes einfallen lassen, um einerseits den htaccess - Schutz zu erhalten und andererseits doch ohne dauernde Passworteingabe an die Daten kommen zu können (kann ich meinen Besuchern wirklich icht zumuten).

            Nochmals Dank und gute Nacht

            Hermann

            1. Guten Morgen,

              die Authentifizierungsdaten stehen nach dem Ausfüllen des 401-Error Anmeldefensters in den Variabblen $HTTP_SERVER_VARS["PHP_AUTH_USER"] und $HTTP_SERVER_VARS["PHP_AUTH_PW"].

              Bei neueren PHP-Versionen auch in den superglobalen Variablen $_SERVER["..."]

              Du kannst diese Variablen _nach_ einer HTTP-Authentication alos dann auch für die Anmeldung an der Datenbank benutzen.

              Liebe Grüße aus http://www.braunschweig.de

              Tom

              1. Guten Morgen,

                die Authentifizierungsdaten stehen nach dem Ausfüllen des 401-Error Anmeldefensters in den Variabblen $HTTP_SERVER_VARS["PHP_AUTH_USER"] und $HTTP_SERVER_VARS["PHP_AUTH_PW"].

                Bei neueren PHP-Versionen auch in den superglobalen Variablen $_SERVER["..."]

                Du kannst diese Variablen _nach_ einer HTTP-Authentication alos dann auch für die Anmeldung an der Datenbank benutzen.

                Liebe Grüße aus http://www.braunschweig.de

                Tom

                Hi Tom,

                vielen Dank, werde ich gleich ausprobieren.

                Gruß

                Hermann

                1. Guten Morgen,

                  die Authentifizierungsdaten stehen nach dem Ausfüllen des 401-Error Anmeldefensters in den Variabblen $HTTP_SERVER_VARS["PHP_AUTH_USER"] und $HTTP_SERVER_VARS["PHP_AUTH_PW"].

                  Bei neueren PHP-Versionen auch in den superglobalen Variablen $_SERVER["..."]

                  Du kannst diese Variablen _nach_ einer HTTP-Authentication alos dann auch für die Anmeldung an der Datenbank benutzen.

                  Liebe Grüße aus http://www.braunschweig.de

                  Tom

                  Hi Tom,

                  vielen Dank, werde ich gleich ausprobieren.

                  Gruß

                  Hermann

                  Hi all,

                  irgendwie stehe ich total auf dem Schlauch und komme - glaube ich - nur weiter, wenn ich einmal irgendwo ein vollständiges Beispiel ansehen kann. Die Nerven liegen blank.
                  Ich habe viele Auszughinweise gelesen - dafür danke ich allen ausserordentlich, die mir diese Hinweise gegeben haben - aber, ich kriege es einfach ohne ein vollständiges funktionierendes Beispiel nicht hin. Vielleicht bin ich ja auch zu blöd.
                  Vielleicht bin ich aber auch völlig auf dem falschen Dampfer und beschreibe einfach noch einmal (offen für andere Ideen) die Aufgabenstellung:

                  a: ein user meldet sich an - passwordabfrage mittels mysql - (das funktioniert bei mir
                  b: der user ist jetzt auf einer Auswahlseite und will in SEINEN! eigenen geschützten Bereich (htaccess - zwingende Vorgabe)
                  c: sein ERST-loggin und der PERSÖNLICHE geschützte Bereich haben identische Benutzernamen und Kennwörter
                  d: ich will den Benutzer nicht zwingen, jetzt noch einmal SEINE Daten eingeben zu müssen (wäre lästig)

                  Also, das wär's und ich bin im wahrsten Sinne des Wortes "AM ENDE".

                  Solltet ihr also ein zusammenhängendes Beispiel im Quellcode haben, oder wissen, wo ich das finde, wäre ich euch ausserordentlich dankbar.

                  Bis dahin schon einmal herzlichen Dank für die bisherige Hilfe.

                  Gruß aus Uelzen

                  Hermann

                  1. Guten Abend Hermann,

                    die Authentifizierungsdaten stehen nach dem Ausfüllen des 401-Error Anmeldefensters durch

                    .htaccess oder
                    header("HTTP/1.0 401 Unauthorized")

                    in den Variabblen $HTTP_SERVER_VARS["PHP_AUTH_USER"] und $HTTP_SERVER_VARS["PHP_AUTH_PW"].
                    Bei neueren PHP-Versionen auch in den superglobalen Variablen $_SERVER["..."]

                    Du kannst diese Variablen _nach_ einer HTTP-Authentication also dann auch für die Anmeldung an der Datenbank benutzen.

                    a: ein user meldet sich an - passwordabfrage mittels mysql - (das funktioniert bei mir

                    wie und wodurch meldet er sich an der Datenbank an? Durch HTTP-Formular?

                    b: der user ist jetzt auf einer Auswahlseite und will in SEINEN! eigenen geschützten Bereich (htaccess - zwingende Vorgabe)

                    Andersherum wird ein Schuh draus. Erst Login über .htaccess oder header(), dann Zugriff auf die Datenbank via wwwrun und php-mysql-Funktionen mit den ausgefüllten Variablen.

                    Liebe Grüße aus http://www.braunschweig.de

                    Tom

                    1. Guten Abend Hermann,

                      die Authentifizierungsdaten stehen nach dem Ausfüllen des 401-Error Anmeldefensters durch

                      .htaccess oder
                      header("HTTP/1.0 401 Unauthorized")

                      in den Variabblen $HTTP_SERVER_VARS["PHP_AUTH_USER"] und $HTTP_SERVER_VARS["PHP_AUTH_PW"].
                      Bei neueren PHP-Versionen auch in den superglobalen Variablen $_SERVER["..."]

                      Du kannst diese Variablen _nach_ einer HTTP-Authentication also dann auch für die Anmeldung an der Datenbank benutzen.

                      a: ein user meldet sich an - passwordabfrage mittels mysql - (das funktioniert bei mir

                      wie und wodurch meldet er sich an der Datenbank an? Durch HTTP-Formular?

                      b: der user ist jetzt auf einer Auswahlseite und will in SEINEN! eigenen geschützten Bereich (htaccess - zwingende Vorgabe)

                      Andersherum wird ein Schuh draus. Erst Login über .htaccess oder header(), dann Zugriff auf die Datenbank via wwwrun und php-mysql-Funktionen mit den ausgefüllten Variablen.

                      Liebe Grüße aus http://www.braunschweig.de

                      Tom

                      Hi Tom,

                      klasse wieder von Dir zu hören, aber ich komme so einfach nicht damit klar.
                      Habe auch heute schon wieder den ganzen Tag rumprobiert.

                      Da meine Nerven nun wirklich endgültig blank liegen, noch einmal meine Frage nach einem !!VOLLSTÄNDIGEN SCRIPT!!, in dem ich "nur" noch die Umgebungsvariablen austauschen muss.
                      Da ich in Uelzen wohne - sind ja nur 120 km bis zu euch - komme ich danach auch gern nach Braunschweig und lade Dich zum Italiener ein (kleiner Bestechungsversuch), aber ich weiß wirklich nicht mehr weiter.

                      Auch wenn Du kein Muster hast - schon mal DANKE. Gut zu wissen, dass man nicht allein ist.

                      Beste Grüße aus Uelzen

                      hermann

                      1. Hallo!

                        Also wenn ich das jetzt alles richtig verstanden habe, möchtest Du gerne Sachen vereinbaren, die nicht vereinbar sind!

                        Mit der PHP-Authentifizierung erreichst Du _keinen_ Schutz äquivalent zu .htaccess. .htaccess schützt automatisch alles, nicht nur die PHP-Scripte. Per Basic-Authentification(also .htaccess) kommst Du nicht drum herum dass sich das Auth-Fenster jedesmal öffnet und Du nach dem Passwort gefragt wirst, wobei man das im Browser speichern kann und so nicht immer neu eingeben muß, ist eine Frage der Sicherheit.

                        Wenn Du nicht willst das man sich jedesmal authentifizieren muß, geht das nur über einen eigenen Mechanismus mit Hilfe von Cookies und Sessions. Dann mußt Du Dich aber um alles selber kümmern, und hast nur Deine Scripte geschützt (und das nur wenn Du das überall und sicher eingebaut hast), nicht Deine Bilder, .html, .pdf, etc.

                        Ist halt die Frage was Du jetzt genau brauchst, das konnte ich bisher nicht feststellen. Das einzige was klar ist - beides geht nicht. Entweder umfassender Schutz aller Datein mit dem Auth-Fenster bei jedem Login, oder eine bequemere, eigene Lösung, die nur die Scripte schützt und auch das nur so gut wie Du es implementiert hast. Es ist immer dasselbe, erhöhte Sicherheit geht fast immer zu Lasten der Bequemlichkeit.

                        Ist halt die Frage was Du Deinen Usern zumuten willst, und Du auf der anderen Seite für ein Schutzbedürfnis und Programmierkenntnise für eine eigene Lösung hast. Da mußt Du abwägen.

                        Die Speicherung der Zugangsdaten ist davon absolut unabhhängig, wenn Du entsprechnde Apache-Module verwenden kannst geht das wie schon geschrieben auch direkt in einer Datenbank, aber auch die "normalen" Flatfiles lassen sich schön mit PHP(etc.) bearbeiten, wenn das das Problem darstellen sollte.

                        Viele Grüße
                        Andreas

                        1. Hi Andreas,

                          Also wenn ich das jetzt alles richtig verstanden habe, möchtest Du gerne Sachen vereinbaren, die nicht vereinbar sind!

                          Ich denke, dass das verinbar ist.

                          Mit der PHP-Authentifizierung erreichst Du _keinen_ Schutz äquivalent zu .htaccess. .htaccess schützt automatisch alles, nicht nur die PHP-Scripte. Per Basic-Authentification(also .htaccess) kommst Du nicht drum herum dass sich das Auth-Fenster jedesmal öffnet und Du nach dem Passwort gefragt wirst, wobei man das im Browser speichern kann und so nicht immer neu eingeben muß, ist eine Frage der Sicherheit.

                          Wenn ich einmal einen "401-Dialog" ausgefüllt habe, bleiben die Authdaten für das Fenster und alle seine Kinder solange im Browser gespeichert, bis es geschlossen wird.

                          Wenn ich mich also gleich im ersten Fenster autentifiziere, gelten die Authdaten solange, bis wieder ein 401 geschickt wird. Der wird aber von .htaccess nur dann geschickt, wenn die Authdaten ungültig sind oder das Fenster eben keine hat.

                          Da die Authdaten $HTTP_SERVER_VARS["PHP_AUTH_USER"] und $HTTP_SERVER_VARS["PHP_AUTH_PW"] dann in jedem Script, dass vom gelichen oder untergeordneten Fenstern des Browsers aufgerufen wird, zur Verfügung stehen, kann man die auch für die Datenbankanmeldung mittels wwwrun (PHP) und dem Befehl
                          $conn = mysql_connect($hostname,$HTTP_SERVER_VARS["PHP_AUTH_USER"],$HTTP_SERVER_VARS["PHP_AUTH_PW"]); an MySQL benutzen. Hier findet ja keine persistente Anmeldung statt, sondern jedes Script muss erneut einen Connect herstellen.

                          Ebanfalls viele Grüße, aber aus http://www.braunschweig.de

                          Tom

                          1. Hallo!

                            Also wenn ich das jetzt alles richtig verstanden habe, möchtest Du gerne Sachen vereinbaren, die nicht vereinbar sind!

                            Ich denke, dass das verinbar ist.

                            Ich hatte das so verstanden er woll nicht das die Besucher bei jedem neuen _Besuch_ Ihre Daten neu eingeben müssen, nicht auf jeder Seite ;-)

                            Mit der PHP-Authentifizierung erreichst Du _keinen_ Schutz äquivalent zu .htaccess. .htaccess schützt automatisch alles, nicht nur die PHP-Scripte. Per Basic-Authentification(also .htaccess) kommst Du nicht drum herum dass sich das Auth-Fenster jedesmal öffnet und Du nach dem Passwort gefragt wirst, wobei man das im Browser speichern kann und so nicht immer neu eingeben muß, ist eine Frage der Sicherheit.

                            Wenn ich einmal einen "401-Dialog" ausgefüllt habe, bleiben die Authdaten für das Fenster und alle seine Kinder solange im Browser gespeichert, bis es geschlossen wird.

                            klar! .htaccess und die PHP-Metzhode haben aber einen wichtigen Unterschied: die PHP-Methode funktioniert ja nur in jemdem PHP Script, in dem Du die PHP-Umgebungsvariablen "manuell" prüfst. ALLES andere ist nicht geschützt, so alle .html, .pdf, .jpg, ... Bei .htaccess werden _alle_ HTTP-Anfragen geschützt werden! Es kommt halt drauf an was man braucht. Der Vorteil der HTTP Auth-Methode in PHP ist im Gegensatz zu anderen Lösungen mit PHP insofern gut, da man hier weder Cookies noch Sessions braucht. Aber das ist auch der einzige Vorteil.

                            Wenn ich mich also gleich im ersten Fenster autentifiziere, gelten die Authdaten solange, bis wieder ein 401 geschickt wird. Der wird aber von .htaccess nur dann geschickt, wenn die Authdaten ungültig sind oder das Fenster eben keine hat.

                            Da die Authdaten $HTTP_SERVER_VARS["PHP_AUTH_USER"] und $HTTP_SERVER_VARS["PHP_AUTH_PW"] dann in jedem Script, dass vom gelichen oder untergeordneten Fenstern des Browsers aufgerufen wird, zur Verfügung stehen, kann man die auch für die Datenbankanmeldung mittels wwwrun (PHP) und dem Befehl
                            $conn = mysql_connect($hostname,$HTTP_SERVER_VARS["PHP_AUTH_USER"],$HTTP_SERVER_VARS["PHP_AUTH_PW"]); an MySQL benutzen. Hier findet ja keine persistente Anmeldung statt, sondern jedes Script muss erneut einen Connect herstellen.

                            Klar! Daher ist .htaccess auch besser, da diese hier wegfällt, bzw. erheblich performanter vom Apachen erledigt wird.

                            Viele Grüße
                            Andreas

                        2. Hallo!

                          Also wenn ich das jetzt alles richtig verstanden habe, möchtest Du gerne Sachen vereinbaren, die nicht vereinbar sind!

                          Mit der PHP-Authentifizierung erreichst Du _keinen_ Schutz äquivalent zu .htaccess. .htaccess schützt automatisch alles, nicht nur die PHP-Scripte. Per Basic-Authentification(also .htaccess) kommst Du nicht drum herum dass sich das Auth-Fenster jedesmal öffnet und Du nach dem Passwort gefragt wirst, wobei man das im Browser speichern kann und so nicht immer neu eingeben muß, ist eine Frage der Sicherheit.

                          Wenn Du nicht willst das man sich jedesmal authentifizieren muß, geht das nur über einen eigenen Mechanismus mit Hilfe von Cookies und Sessions. Dann mußt Du Dich aber um alles selber kümmern, und hast nur Deine Scripte geschützt (und das nur wenn Du das überall und sicher eingebaut hast), nicht Deine Bilder, .html, .pdf, etc.

                          Ist halt die Frage was Du jetzt genau brauchst, das konnte ich bisher nicht feststellen. Das einzige was klar ist - beides geht nicht. Entweder umfassender Schutz aller Datein mit dem Auth-Fenster bei jedem Login, oder eine bequemere, eigene Lösung, die nur die Scripte schützt und auch das nur so gut wie Du es implementiert hast. Es ist immer dasselbe, erhöhte Sicherheit geht fast immer zu Lasten der Bequemlichkeit.

                          Ist halt die Frage was Du Deinen Usern zumuten willst, und Du auf der anderen Seite für ein Schutzbedürfnis und Programmierkenntnise für eine eigene Lösung hast. Da mußt Du abwägen.

                          Die Speicherung der Zugangsdaten ist davon absolut unabhhängig, wenn Du entsprechnde Apache-Module verwenden kannst geht das wie schon geschrieben auch direkt in einer Datenbank, aber auch die "normalen" Flatfiles lassen sich schön mit PHP(etc.) bearbeiten, wenn das das Problem darstellen sollte.

                          Viele Grüße
                          Andreas

                          Moin moin Andreas,

                          danke für Deine "späte (Uhrzeit)" Information - ich mußte einfach mal schlafen.

                          Deine Ausführungen zu dem Thema "Datenbank" haben wieder einen Hoffnungsschimmer bei mir geweckt und ich beschreibe noch einmal, was die Aufgabe ist - wahrscheinlich habe ich mich kryptisch ausgedrückt:

                          a) ein User betritt per Datenbankabgleich seiner spezifischen Benutzerdaten einen (für viele User - aber nicht für die Öffentlichkeit) gleichgeltenden Informationsbereich. Hierzu benutzt er bereits "seine" spezifischen Userdaten. Dieses Verzeichnis ist allerdings derzeit (also während der Testzeit) noch nicht mit .htaccess geschützt. Deswegen funktioniert das auch.
                          b) in diesem allgemeinen Informationsbereich findet er Möglichkeiten des Zugriffs auf Informationen (z.B. Projektinformationen), die NUR ihn was angehen - er könnte also theoretisch einfach weiterarbeiten, ohne erneut Benutzerdaten einzugeben, wenn da nicht das Problem wäre.
                          c) Selbst wenn er "SEINEN" Bereich durch nochmalige Eingabe seiner Benutzerdaten betreten hat, führt immer noch jeglicher Aufruf neuer Seiten in diesem Bereich zur .htaccess gesteuerten Abfrage (tausendmal ausprobiert).
                          d) da die angetroffene Benutzer-/Systemumgebung die Verwendung von Cookies NICHT erlaubt, muss ein anderer Weg gefunden werden, um nicht bei jedem Seitenwechsel jedesmal die Benutzerdaten erneut eingeben zu müssen.

                          Das muss doch irgendwie gehen. Wenn ich mir zum Beispiel "gmx" ansehe, dann betritt der Anwender seinen Bereich und kann darin problemlos OHNE Cookies navigieren. Gleiches gilt für eine Vielzahl anderer Anbieter. Auch wird ein "allgemeingültiger" Bereich betreten, um dann in individuelle Informationsangebote (z.B. e-mail) zu wechseln.

                          Vielleicht hab eich das Thema jetzt umfassend beschrieben.

                          Ich danke nochmals für jegliche Hilfe.

                          Gruß

                          Hermann

                          1. Hallo!

                            Bitte nicht immer den ganzen Beitrag zitieren, so wie Du das machst kannst Du das besser löschen.

                            a) ein User betritt per Datenbankabgleich seiner spezifischen Benutzerdaten einen (für viele User - aber nicht für die Öffentlichkeit) gleichgeltenden Informationsbereich.

                            Wie betritt man einen Bereich "per Datenbankabgleich"? Heißt das Du hast ein  Unterzeichnis, welches nur bestimmten Usern zur Verfügung stehen soll, also müssen die User sich authentifizieren. Das geht wie ich bereits geschrieben habe über .htaccess oder eine eigene PHP-Lösung.
                            Ob Du die Zugangsdatn bei einer .htaccess Lösung in der Datenbank ablegen kannst hängt davon ab ob Du das entsprechnde Apache-Modul installiert hast/installieren kannst. Sonst bleibt nur eien .txt oder eien komplette Eigenlösung in PHP, da mußt Du dann auf jeder zu schützenden Seite am Anfang des Scriptes manuell prüfen ob die Userdaten korrekt sind. Hiermit würdest Du aber nur .php Dateien schützen können, kein .doc, .jpg, .pdf, .html,... usw.

                            Hierzu benutzt er bereits "seine" spezifischen Userdaten. Dieses Verzeichnis ist allerdings derzeit (also während der Testzeit) noch nicht mit .htaccess geschützt. Deswegen funktioniert das auch.

                            b) in diesem allgemeinen Informationsbereich findet er Möglichkeiten des Zugriffs auf Informationen (z.B. Projektinformationen), die NUR ihn was angehen - er könnte also theoretisch einfach weiterarbeiten, ohne erneut Benutzerdaten einzugeben, wenn da nicht das Problem wäre.

                            Wo ist das Problem? Denk daran das .htaccess nurt das eigene Verzeichnis und dessen Unterverzeichnisse schützt. Bei eine .htaccess Lösung steht Dir in PHP z.B, die Umgebungsvariable $_SERVER["REMOTE_USER"] zur Verfügung. Diese Variable enthält den aktuell eingeloggten Usernamen. Die Frage ist etzt, wo und wie stellste Du was zur Verfügung. Also stellst Du Projekte als .xls-Dateien zur Verfügung? Oder alles auf PHP Basis? Das ist mal das erste was geklärt werden muß. Mußt Du andere Dateien als PHP-Dateien schützen?

                            c) Selbst wenn er "SEINEN" Bereich durch nochmalige Eingabe seiner Benutzerdaten betreten hat, führt immer noch jeglicher Aufruf neuer Seiten in diesem Bereich zur .htaccess gesteuerten Abfrage (tausendmal ausprobiert).

                            Naja, das kann  ich mir nicht vorstellen. Schreib mal Deine Verzeichnisstruktur auf, in der sich die User bewegen solen, und wo Du überall genau was für .htaccess Dateien hast.

                            d) da die angetroffene Benutzer-/Systemumgebung die Verwendung von Cookies NICHT erlaubt, muss ein anderer Weg gefunden werden, um nicht bei jedem Seitenwechsel jedesmal die Benutzerdaten erneut eingeben zu müssen.

                            OK, fällt das aus, aber da bliebe noch der Weg über die PHP-Authentification wie Thomas es beschreiben hat, und Sessions.

                            Das muss doch irgendwie gehen. Wenn ich mir zum Beispiel "gmx" ansehe, dann betritt der Anwender seinen Bereich und kann darin problemlos OHNE Cookies navigieren. Gleiches gilt für eine Vielzahl anderer Anbieter. Auch wird ein "allgemeingültiger" Bereich betreten, um dann in individuelle Informationsangebote (z.B. e-mail) zu wechseln.

                            Die machen das mit Sessions, vermutlich nicht mit PHP, ist aber dasselbe:
                            http://www.dclp-faq.de/q/q-sessions-zweck.html
                            http://www.dclp-faq.de/ch/ch-version4_session.html

                            Vielleicht hab eich das Thema jetzt umfassend beschrieben.

                            Schon besser, aber noch nicht genug(für mich). Löse Dich mal ein bisschen von dem Zwang die Authentifizierungsdatzen aus der Datnebank auslesen zu _müssen_. Du mußt nur die Usernamen uin der Datenbank stehen haben, um ggfs mit dem eingeloggten Usernamen vergleichen zu können. D.h. Du hast für .htaccess eien .htpasswrd, in der stehen Passwört:

                            andreas:asdhais435s
                            Thomas:q343qeasdfa
                            Hermann:a98s7dausda

                            in der Datenbnak hast DU die Tabelle Projekte, darin steht:

                            projekt_id | projekt_name | user
                            -----------+--------------+----------
                            1          | Projekt1     | Hermann
                            2          | Prpjekt xy   | Thomas
                            ...

                            Dann machst Du normal einen Login mut der .htaccess über die Passwortdatei, und im PHP Script zeigst Du nur die projekte an, die dem aktuellen  User gehören, also

                            SELECT * FROM projekte WHER user = '".$_SERVER["REMOTE_USER"]."';

                            Funktionierr den .htaccess _überhaupt_ bei Dir? Also wenn Du ein Testverzeichnois 1 .htaccess und 2 Dateien hast, kannst Du dich da anmelden und beide Dateien ohne erneute Anmeldung aufrufen? Wenn ja, was ist in Deiner Konfiguration anders?

                            Viele Grüße
                            Andreas

                            PS: Hatte keine Lust mehr Rechtschreibfehler zu korregieren, sorry ;-)

                          2. Hi Hermann,

                            a) ein User betritt per Datenbankabgleich seiner
                            spezifischen Benutzerdaten einen (für viele User -
                            aber nicht für die Öffentlichkeit) gleichgeltenden
                            Informationsbereich. Hierzu benutzt er bereits
                            "seine" spezifischen Userdaten. Dieses Verzeichnis
                            ist allerdings derzeit (also während der Testzeit)
                            noch nicht mit .htaccess geschützt. Deswegen
                            funktioniert das auch.

                            und deswegen funktioniert der Rest _nicht_.

                            Schütze auch dieses Verzeichnis bereits mit .htaccess,
                            durch die Prüfung von "valid-user".
                            Hier und jetzt _muß_ der Anwender gezwungen werden,
                            sich via Server Authentication einzuloggen - in allen
                            nachfolgenden Zugriffen wird _dann_ seine Benutzerken-
                            nung von Deinen PHP-Skripten über die CGI-Schnittstelle
                            weiter verarbeitet werden können.

                            b) in diesem allgemeinen Informationsbereich findet
                            er Möglichkeiten des Zugriffs auf Informationen
                            (z.B. Projektinformationen), die NUR ihn was angehen

                            • er könnte also theoretisch einfach weiterarbeiten,
                              ohne erneut Benutzerdaten einzugeben, wenn da nicht
                              das Problem wäre.

                            Das Problem besteht darin, daß Du die Logik einer
                            Client-Server-Kommunikation und das Wesen der HTTP
                            Authentication noch nicht verstanden hast.

                            HTTP Authentication, also das, was Du ".htaccess"
                            nennst, funktioniert so, daß der Browser (!) bei jedem
                            Zugriff auf eine Seite die in seinem Arbeitsspeicher
                            gespeicherten credentials immer wieder mitsendet (ohne
                            daß dies dem Besucher bewußt ist).

                            Dazu muß er sie aber zuallererst einmal haben! Und das
                            schaffst Du nicht mit einer wie auch immer gearteten
                            serverseitigen Logik, sondern nur mit der Verwendung
                            von HTTP Authentication. Alle Versuche, mit PHP oder
                            mySQL irgendwas serverseitig zu tun, sind zum Scheitern
                            verurteilt. Es geht _nur_ anders herum.

                            c) Selbst wenn er "SEINEN" Bereich durch nochmalige
                            Eingabe seiner Benutzerdaten betreten hat, führt
                            immer noch jeglicher Aufruf neuer Seiten in diesem
                            Bereich zur .htaccess gesteuerten Abfrage
                            (tausendmal ausprobiert).

                            Das verstehe ich nicht. Da müßte ich ein Beispiel zum
                            Ansehen haben. Welchen Realm Name liefert Dein Server
                            denn für diese Seiten aus?
                            Besitzt Du ein Werkzeug, mit dem Du die HTTP-Header der
                            von Dir ausgelieferten Seiten lesen kannst?
                            (http://www.schroepl.net/cgi-bin/http_trace.pl)

                            d) da die angetroffene Benutzer-/Systemumgebung die
                            Verwendung von Cookies NICHT erlaubt, muss ein
                            anderer Weg gefunden werden, um nicht bei jedem
                            Seitenwechsel jedesmal die Benutzerdaten erneut
                            eingeben zu müssen.

                            Die Erwähnung von Cookies war ein Irrweg, der auf
                            Deiner nicht wirklich transparenten Problembeschrei-
                            bung basierte. Vergiß diese Idee wieder.

                            Das muss doch irgendwie gehen. Wenn ich mir zum
                            Beispiel "gmx" ansehe, dann betritt der Anwender
                            seinen Bereich und kann darin problemlos OHNE
                            Cookies navigieren.

                            Ja - aber GMX verwendet dann auch keine HTTP Authen-
                            tication, sondern ein eigenes Session-Protokoll.
                            Wenn Du das willst, dann vergiß .htaccess komplett
                            und lies Dich in das Session-Handling von PHP ein.

                            Viele Grüße
                                  Michael

                            P.S.: Eine fertige Lösung für Dein Problem ist solange
                                  nicht möglich, wie Dein Problem immer noch nicht
                                  exakt beschrieben ist.

  2. Hallo Hermann,

    bitte keine Lacher zu meiner Frage - ich habe noch nicht die größte Ahnung von PHP, komme aber schon ganz gut damit rum.

    Mein Problem - kaue seit 18 Stunden drauf rum.

    Mein Beileid.

    Was muß ich jetzt wie in das PHP - Script eintragen, damit ich nicht zur erneuten Eingabe von Benutzername und Kennwort (Benutzer hat sich schon einmal aufgrund einer Abfrage über die Datenbank authentifiziert).

    Dumme, kleine Zwischenfrage: Warum verwendest Du nicht mod_auth_mysql? Dann wird immer über die mysql-Datenbank authentifiziert und in PHP kannst Du über $_SERVER["REMOTE_USER"] den Benutzernamen auslesen. Dann reduziert sich das Datenhaltungsproblem. Du müsstest dann nur noch die entsprechenden PHP-Dateien auch noch schützen (.htaccess+mod_auth_mysql) und die könntest die ganze Authentifizierung herausverlagern. Nur die Verwaltung könnte noch PHP sein.

    Guten Nacht,

    Christian

    --
    Sollen sich alle schämen, die gedankenlos sich der Wunder der Wissenschaft und Technik bedienen und nicht mehr davon erfasst haben als eine Kuh von der Botanik der Pflanzen, die sie mit Wohlbehagen frisst.
                          -- Albert Einstein
    1. Hallo Hermann,

      bitte keine Lacher zu meiner Frage - ich habe noch nicht die größte Ahnung von PHP, komme aber schon ganz gut damit rum.

      Mein Problem - kaue seit 18 Stunden drauf rum.

      Mein Beileid.

      Was muß ich jetzt wie in das PHP - Script eintragen, damit ich nicht zur erneuten Eingabe von Benutzername und Kennwort (Benutzer hat sich schon einmal aufgrund einer Abfrage über die Datenbank authentifiziert).

      Dumme, kleine Zwischenfrage: Warum verwendest Du nicht mod_auth_mysql? Dann wird immer über die mysql-Datenbank authentifiziert und in PHP kannst Du über $_SERVER["REMOTE_USER"] den Benutzernamen auslesen. Dann reduziert sich das Datenhaltungsproblem. Du müsstest dann nur noch die entsprechenden PHP-Dateien auch noch schützen (.htaccess+mod_auth_mysql) und die könntest die ganze Authentifizierung herausverlagern. Nur die Verwaltung könnte noch PHP sein.

      Guten Nacht,

      Christian

      »»
      Hi Christian,

      vieleicht verstehe ich nach der langen Zeit nur noch Bahnhof. Hättest Du vielleicht ein konkretes Beispiel(script), oder einen link zu solchen scripts!?
      Wenn nicht, auch nicht schlimm - ann muss ich eben morgen noch einmal ran.

      Besten Dank

      Hermann

      1. Hallo!

        vieleicht verstehe ich nach der langen Zeit nur noch Bahnhof. Hättest Du vielleicht ein konkretes Beispiel(script), oder einen link zu solchen scripts!?
        Wenn nicht, auch nicht schlimm - ann muss ich eben morgen noch einmal ran.

        In der Apache Doku steht einiges, da es sch hierbei um eien Apache Modul handelt, die Authentifizierung hat nichts mit PHP zu tun, aber der Apache stellt mit REMOTE_USER auch PHP den Wert des aktuellen Users zur Verfügung.

        http://httpd.apache.org/docs/howto/auth.html#database

        Grüße
        Andreas

        1. Hallo!

          vieleicht verstehe ich nach der langen Zeit nur noch Bahnhof. Hättest Du vielleicht ein konkretes Beispiel(script), oder einen link zu solchen scripts!?
          Wenn nicht, auch nicht schlimm - ann muss ich eben morgen noch einmal ran.
          In der Apache Doku steht einiges, da es sch hierbei um eien Apache Modul handelt, die Authentifizierung hat nichts mit PHP zu tun, aber der Apache stellt mit REMOTE_USER auch PHP den Wert des aktuellen Users zur Verfügung.

          http://httpd.apache.org/docs/howto/auth.html#database

          Grüße
          Andreas

          Moin, Moinn,

          sorry Andreas, wenn ich heute Nacht nicht mehr geantwortet habe, aber es ging einfach nicht mehr.
          Danke für den HInweis mit dem Apache - da mache ich mich jetzt drüber her und melde mich wieder mit Ergebnissen - so oder so.

          Gruß

          Hermann