newbie: Tom - kannst Du mir dieses Beispiel erläutern?

Hallo,

auf der Suche nach einem guten LogIn verfahren, bin ich auf dieses von Tom gestoßen: http://forum.de.selfhtml.org/archiv/2007/4/t150774/#m981588

-----
<?php
  if(!isset($_SERVER["PHP_AUTH_USER"]) or !isset($_SERVER["PHP_AUTH_PW"]))
  {
    Header("WWW-Authenticate: Basic realm="My Realm"");
    Header("HTTP/1.0 401 Unauthorized");
    echo "Text, der gesendet wird, wenn der Benutzer abbricht.<br />".
         "Das sollte eine vollst&auml;ndige HTML Seite sein.\n<br>";
    exit;
  }
  else
  {
    echo "Hello ".$_SERVER["PHP_AUTH_USER"]."<P>";
    echo "Du hast <b>".$_SERVER["PHP_AUTH_PW"]."</b> als Passwort eingegeben.<P>";
  }
?>
-----

Doch leider ist mir die funktionesweise noch nicht ganz klar, aber ich will es nicht einfach unverstanden verwenden. Kann mir jemand dieses erklären und mir die Vorteile zu einem "gewöhnlichem" LogIn-System mit LogIn-Skript und Session-Cookie erklären?

Vielen Dank

Gruß

  1. Hallo,

    natürlich kann mir gerne auch jeder andere, der kann, das erklären.

    Und mir vielliecht wtas auf die Sprünge helfen bei verschiedenen LogIn-Systemen:

    a) der Layout sollte auf der Seite erfolgen, also nicht mit so einem "PopUp"

    b) Sessionbasiert, das Problem sind nur die User, die keine Session-Cookies erlaube. Wie finde ich herraus, ob ein User Session-Cookies erlaubt und was mache ich dann?

    c) sonstige Hinweise

    Gruß

    1. Hallo,

      natürlich kann mir gerne auch jeder andere, der kann, das erklären.

      Toll, Danke!

      Und mir vielliecht wtas auf die Sprünge helfen bei verschiedenen LogIn-Systemen:

      a) der Layout sollte auf der Seite erfolgen, also nicht mit so einem "PopUp"

      b) Sessionbasiert, das Problem sind nur die User, die keine Session-Cookies erlaube. Wie finde ich herraus, ob ein User Session-Cookies erlaubt und was mache ich dann?

      c) sonstige Hinweise

      zu a: siehe unten
      zu b: Normalerweise habe ich kein Problem damit einen Keks zuzulassen, wenn ich mich einloggen will. Das tue ich doch auf Seiten denen ich soweit vertraue, dass ich einen Keks annehme. Mann kann Sessiondaten aber auch über URL transportieren IIRC. Näheres sollte auf der PHP Doku unter php.net zu finden sein.
      zu c: Hinweis

      Du wirst es schwer haben eine Frage zu finden, zu der Du mittels Suchfunktion keine Antwort findest ;)

      netten Tag
      ^da Powl

      --
      ===============================
      powl.hat-gar-keine-homepage.de/
  2. Hello,

    welch Zufall, dass ich gerade mal reinschaue. Ich kämpfe immer noch mit Grippe o.ä. aber das Forum macht ja bekanntlich spüchtig und da muss ich trotz Bettruhe mal schauen :-)

    auf der Suche nach einem guten LogIn verfahren, bin ich auf dieses von Tom gestoßen: http://forum.de.selfhtml.org/archiv/2007/4/t150774/#m981588


    <?php
      if(!isset($_SERVER["PHP_AUTH_USER"]) or !isset($_SERVER["PHP_AUTH_PW"]))
      {
        Header("WWW-Authenticate: Basic realm="My Realm"");
        Header("HTTP/1.0 401 Unauthorized");
        echo "Text, der gesendet wird, wenn der Benutzer abbricht.<br />".
             "Das sollte eine vollst&auml;ndige HTML Seite sein.\n<br>";
        exit;
      }
      else
      {
        echo "Hello ".$_SERVER["PHP_AUTH_USER"]."<P>";
        echo "Du hast <b>".$_SERVER["PHP_AUTH_PW"]."</b> als Passwort eingegeben.<P>";
      }
    ?>

    Hier handelt es sich nicht um mein "Login", sondern um eine authentifizierung des Clients durch die beiden geforderten HTTP-Parameter User und Passwort. Diese werden dann durchn das berühmte Fenster im Browser abgefragt, wenn sie nicht vorhanden sind.

    Also von vorne:

    Client führt Request aus ohne Zugangsdaten
      PHP-Server-Modul kann daher weder PHP_AUTH_USER noch PHP_AUTH_PW ans Script weiterreichen
      Script kann dies beiden Werte also nicht finden und löst die Header aus.
        Zusätzlich sendet es mit den Headern einen Alternativ-Text (HTML-konform!) mit, der
        vom Browser angezeigt würde, wenn dieser meint, dass es nun keinen Zweck mehr hat,
        zu probieren (klassisch nach dem dritten Fehlversuch)
      Der Browser klappt beim Empfang dieser Header ein Fenster auf, um die Werte abzufragen
      Mit dem nächsten Request sendet er sie mit.
      Wenn sie passen, wird im Script der else-Zweig ausgeführt, wenn nicht, werden wirder die
      Header gesendet.

    Hier "schützt" sich das Script quasi selber gegen Benutzng.
    Leider werden aber auch hier jedes Mal Passwort und Name mitgesendet im HTTP-Header
    Wenn das Passwort nun nicht regelmäßig (kurzfritig) geändert wird, steigt die Wahrscheinlichkeit des unberechtigten Zugriffes durch (gelegnetliche) Mitleser des Datenverkehrs.

    Es handelt sich also nicht um ein "Login".
    Ein wirkliches "Login" gibt es beim verbindungslosen Protokoll ohnehin nicht.
    Es handelt sich vielmehr um ein "Authenticate" oder ein (Re-)Identicate

    Außerdem ist dieses Script-Stückchen nur rudimentär. Man muss schon ein wenig mehr drum herum stricken, um ein "Loginsystem" daraus werden zu lassen.

    Harzliche Grüße vom Berg
    http://www.annerschbarrich.de

    Tom

    --
    Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
    Nur selber lernen macht schlau