Seit kurzem stellt sich mir die Frage, wie man wie z.B. bei wer-weiss-was mit dem Login verfährt.
Denn, wenn man sich Anfangs einloggt, erkennen die jeweiligen „CGI-Programme“ auch noch später (z.B. bei der Suche nach eigenen Artikeln), wer denn Antrag stellt.
Nun, da ich mir denken kann, dass beim Aufruf des Programms einfach ein Parameter mit übergeben wird, stellt sich mir eben die Frage, wie werden diese Daten übergeben; (mit Java,…)
Nun. Das Problem das du ansprichst heißt im Prinzip: „Wie halte ich einen Zustand, wenn man es mit einem zustandslosen Protokoll zu tun hat?“
D.h. Der Browser und der Webserver bauen immer nur kurz eine Verbindung auf, und vergessen dann wieder alles.
Um nun einen Zustand über mehrere Seitenwechsel zu erhalten gibt es mehrere Ansätze. Alle davon erfordern eine aktive Programmierung auf dem Server (cgi, php, usw.)
ein kurzer abriss:
a) cookies
cookies sind kleine datenpakete die eine webseite auf der festplatte des benutzers speichern darf. wenn dieser das erlaubt.
w-w-w benutzt cookies um z.B. beim auto-login den benutzer einzulesen.
b) server-sided-cookies
über eine eindeutige benutzer-id (die auch automatisch generiert werden kann) werden auf dem server benutzer-einstellungen verwaltet. Dies erfordert meistens ein login.
Die Verwaltung der server-sided-cookies kann in textdateien, einer datenbank, oder was auch immer geschehen.
c) rückgabe als parameter
um den zustand zu erhalten kann eine webseite auch durchgehend schlüsselvariablen entweder als hidden-felder oder als url-parameter zurückzugeben. wie z.b. bei w-w-w
http:/www.wer-weiss-was.de/cgi-bin/forum/writearticle.pl **?op=Antwortartikel\_start&ThemenID=9&replyID=388535w**
d) eine kombination von allem
Ein Login geht i.d.R. so vonstatten, daß der benutzer eine schlüsselkombination eingibt (z.B name/passwort) und diese dann beim Server überprüft wird. Der Server generiert dann aus dieser Kennung und anderen Werten (z.B. der Zeit o.ä.) eine id, die als
schlüssel für die Sitzung (Session), d.h. dem aktuellen Kontakt zwischen Benutzer und Server, dient.
idealerweise erkennt der server den zeitpunkt des letzten kontakts und blockt veraltete Anfragen ab.
Sonst könnte z. B. der Kollege in der Mittagspause am eigenen Rechner mit Hilfe des Browswercaches eigene Daten einsehen. (stichwort: timeout)
kurz aber knapp. wenn du weiteres wissen willst, frag einfach.
cu, holli
Zu den Vorschlägen
Nun, da in den (neueren) Browserversionen das abspeichern von Cookies auch deaktiviert werden kann, ist für mich Vorschlag a irrellevant.
Mir gefällt da eher die schon angeklungene Idee, von einer Parameterübergabe beim Programmaufruf, wie etwa bei deinem Beispiel. Nun, da ich mit Perl über CGI arbeiten möchte, stellt sich mir die Frage, wie kann ich zu jedem Programmaufruf auch die jeweiligen Daten (Name,…) übergeben. Und zwar ohne Java/JavaScript, da sich auch der Aufruf von solchen Programmen unterdrücken lässt.
Dazu mußt du die relevanten Daten „durchschleifen“. Und das für jeden Aufruf. Das geschieht bei Html-Formen dadurch, daß man folgende Felder in den Quelltext einfügt:
usw.
Hinter jeden Link setzt man dan „GET“-Parameter:
Weitere Fragen…
Muß ich versteckte Eingabefelder Anlegen, wenn ich schon beim Link die Parameter angebe?
Desweiteren habe ich jenes Problem:
Ich möchte, dass in einem extra Framefenster ein Loginfeld erscheint (wie bei wer-weiss-was); Nun, wenn sich jemand einloggt, sollte ich auch von anderen Frames aus darauf zugreiffen können; D.h. wenn man in einem anderen Frame z.B. alle Beiträge suchen möchte, welche man unter seinem Loginnamen verfasst hat, dann greift das CGI-Programm (Perl Script) auf die Parameter im Login-Frame zu; Frage: gibt es eine Möglichkeit so vorzugehen?
Ich hatte schon daran gedacht, wenn man sich im Loginframe einloggt, so wird gleichzeitig im anderen Frame (Beiträge durchsuchen) der Link mit den Parametern versehen; Dabei tritt aber folgendes Problem auf: Wenn man z.B. die Aktualisieren Taste drückt, so wird das Grundgerüst, ohne Parameter nachgeladen; d.h. man müsste sich erneut einloggen;
Danke im Voraus, L@her