Benjamin: HTTP-Basic-Anmeldung -> wie wieder abmelden?

Hallo Forum,

ich habe für ein Webprojekt eine Login-Abfrage auf HTTP-Basic-Basis (was für ein Wort ;) ) realisiert, d.h. wenn ich mich innerhalb meines Webprojektes einen geschützten Bereich betrete, sendet PHP über "header()" entsprechende Kopfzeilen ("401 Unauthorized", "Http-Auth[...]" usw.) an den Client, welcher dann auch brav das Login-Formular anzeigt. Im weiteren Verlauf werden über diverse Umgebungsvariablen der angemeldete Nutzer/das Passwort ausgelesen und so die Autorisation des Nutzers überprüft.
Nun meine Frage: Wie bekomme ich den Client (Browser) dazu, diese Login-Daten _nicht_ mehr zu senden, bspw. wenn ich mich abmelden möchte, um mich z.B. daraufhin unter einem anderen Nutzernamen wieder anzumelden?

So long...
Benjamin

  1. Hallo Benjamin,

    Nun meine Frage: Wie bekomme ich den Client (Browser) dazu, diese Login-Daten _nicht_ mehr zu senden, bspw. wenn ich mich abmelden möchte, um mich z.B. daraufhin unter einem anderen Nutzernamen wieder anzumelden?

    Gar nicht.
    Das ist leider der kleine Nachteil bei dieser Authentifizierung.
    Die Browser speichern das Passwort bis zum Beenden.

    (wird das eigentlich vielleicht irgendwann mal abgeändert?)

    Grüße

    Marc Reichelt || http://www.marcreichelt.de/

    --
    Linux is like a wigwam - no windows, no gates and an Apache inside!
    Selfcode: ie:{ fl:| br:> va:} ls:< fo:} rl:( n4:( ss:) de:> js:| ch:? sh:| mo:) zu:)
    http://emmanuel.dammerer.at/selfcode.html
  2. Hi,

    ich habe für ein Webprojekt eine Login-Abfrage auf HTTP-Basic-Basis (was für ein Wort ;) ) realisiert,

    nein, hast Du nicht - es handelt sich nicht um einen Login, sondern um eine Authentifizierung.

    Der Browser speichert die Authentifizierungsdaten meist, bis er wieder beendet wird.

    Für den Firefox kann z.B. mit der Webdeveloper Extension ein früheres Löschen bewerkstelligt werden (unter "Miscellaneous -> Clear HTTP Authentification") - leider werden dabei alle Authentifizierungsdaten gelöscht, nicht nur die für das aktuelle Tab.

    cu,
    Andreas

    --
    Warum nennt sich Andreas hier MudGuard?
    Schreinerei Waechter
    Fachfragen per E-Mail halte ich für unverschämt und werde entsprechende E-Mails nicht beantworten. Für Fachfragen ist das Forum da.
  3. echo $begrüßung;

    Nun meine Frage: Wie bekomme ich den Client (Browser) dazu, diese Login-Daten _nicht_ mehr zu senden, bspw. wenn ich mich abmelden möchte, um mich z.B. daraufhin unter einem anderen Nutzernamen wieder anzumelden?

    Schau mal hier: HTTP authentication with PHP - Beispiel 3 + darunter stehender Text + Userkommentare

    echo "$verabschiedung $name";

    1. Hello,

      Schau mal hier: HTTP authentication with PHP - Beispiel 3 + darunter stehender Text + Userkommentare

      Das Verfahren funktioniert leider nicht.
      Versuch mal, dich dann auf der Seite nochmals anzumelden, wenn Du dich abgemeldet hattest, also abgebrochen hast und dann die Fehlerseite bekommen hast.

      Harzliche Grüße vom Berg
      esst mehr http://www.harte-harzer.de

      Tom

      --
      Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
      Nur selber lernen macht schlau
      1. Hello,

        Das Verfahren funktioniert leider nicht.
        Versuch mal, dich dann auf der Seite nochmals anzumelden, wenn Du dich abgemeldet hattest, also abgebrochen hast und dann die Fehlerseite bekommen hast.

        Grummel:

        <?php   #### logout.php ####

        #------------------------------------------------------------------------------

        function authenticate($ansage, $absage)
        {
          Header("WWW-Authenticate: Basic realm="$ansage"");
          Header("HTTP/1.0 401 Unauthorized");

        echo "<html>\n<head>\n<title>Falsche Daten</title>\n</head>\n<body>\n".
               $absage."</body>\n</html>\n";

        exit;
        }

        #------------------------------------------------------------------------------

        if (!isset($_SERVER['PHP_AUTH_USER']) or !isset($_SERVER['PHP_AUTH_PW']))
        {
          authenticate(date('d.m.Y H:i:s').' Bitte anmelden', 'Pech gehabt!');
        }
        elseif(isset($_POST['logout']))
        {
          authenticate(date('d.m.Y H:i:s').' Bitte anmelden',
             'Pech gehabt!<p><a href="logout.php">zur&uuml;ck</a>');
        }

        ?>

        <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
        <HTML>
        <HEAD>
          <TITLE></TITLE>

        <meta http-equiv="content-type" content="text/html; charset=ISO-8859-1">

        <META NAME="Author" CONTENT="Thomas Schmieder, www.bitworks.de">
          <META NAME="Keywords" LANG="de" CONTENT="">
          <META NAME="Description" CONTENT="">
          <META NAME="Robots" CONTENT="Index,Follow">
          <META NAME="Revisit" CONTENT="After 5 days">
          <META name="date" content="<?php echo date('Y-m-d', filemtime(__FILE__)); ?>">

        <style type="text/css">

        html,  body
            {
              height:99%;
              width:99%;
              font-family:century gothic, tahoma, arial,sans-serif;
            }

        </style>

        </HEAD>

        <BODY>
           <p>Du bist drin</p>

        <form action="<?php echo $_SERVER['PHP_SELF']; ?>"
                 method="post"
                 enctype="multipart/form-data">

        <input type="submit" name="logout" value="Logout">

        </form>

        </BODY>
        </HTML>

        So funktioniert es doch. Man darf nur nicht die "Pech gehabt"-Seite durch reload aufrufen und die Anmeldung damit versuchen. Wenn mittls Link auf die ursprüngliche Seite zurückkehrt, kann man sich auch neu anmelden. Das ist für den user allerdings etwas verwirrend...

        Harzliche Grüße vom Berg
        esst mehr http://www.harte-harzer.de

        Tom

        --
        Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
        Nur selber lernen macht schlau
  4. Nun meine Frage: Wie bekomme ich den Client (Browser) dazu, diese Login-Daten _nicht_ mehr zu senden, bspw. wenn ich mich abmelden möchte, um mich z.B. daraufhin unter einem anderen Nutzernamen wieder anzumelden?

    Ich kenn das Problem auch...
    Habs zwar noch nicht versucht, aber schick dem Browser doch mal ein Unauthorized und ausserdem einen anderen Zonen-Namen zum anmelden ( WWW-Authenticate: Basic realm="Geheimer Bereich" )
    Das dürfte zumindest erlauben, dass du dich mit einem neuen Benutzernamen anmelden kannst.

    Vielleicht reicht das ändern des Zonen-Namens ohne Unauthorised ja dazu aus, dass der Browser keine Zugangsdaten mehr sendet....

    werd das selbst mal testen :)

    greetz RFZ