base
portal
Suche:
Forum
Start
Neue Seite erstellen
Titel:
Das dem Web zugrundeliegende Protokoll HTTP ist ein sog. "zustandsloses" Protkoll, d.h. jeder Aufruf einer Seite erfolgt unabhängig von den anderen und wenn ein- und derselbe Nutzer mehrere Seiten abruft, kann dies nicht miteinander in Verbindung gebracht werden. Um dies dennoch zu ermöglichen, werden sog. "Sessions" (übersetzt "Sitzungen") eingesetzt, die bei jedem Aufruf an die URL angehängt werden. Eine Session ist eine lange, eindeutige, zufällige Zahl und sieht z.B. so aus: <c>241843576451019999416843714593</c>. baseportal erzeugt automatisch für jeden Aufruf eine "Session", falls keine übergeben wurde und schreibt diese in die Variable <c>$_session</c>. Bei angemeldeten Benutzern dient dies gleichzeitig zur Identifizierung, so dass nur beim ersten Aufruf die Anmeldung mit Name und Passwort nötig ist. Nach einer halben Stunde ohne Aktion läuft eine Session ab und die erneute Anmeldung ist nötig. baseportal merkt sich dabei die per URL oder Formular übermittelten Parameter, so dass sofort an derselben Stelle weitergearbeitet werden kann. Auch für unangemeldete Gäste wird eine Session erzeugt, so dass man deren Aktionen auf der Webseite zuordnen kann. Wenn man dies nicht möchte, dürfen die Links einfach keine Session enthalten. <h2>Session-Variablen</h2> baseportal speichert beliebige Werte die zu einer "Sitzung" gehören. Diese werden im Hash <c>%_session</c> gehalten. Hier ein Beispiel: <code> <perl> $_session{Klicks}++; out "Du hast $_session{Klicks} Mal geklickt. Willst Du nochmal <a href=\"baseportal.pl?htx=$htx&sid=$_session\">klicken</a>?"; </perl> </code> Hier wird also jeder Klick mitgezählt. Dies geschieht für den Nutzer im Hintergrund, d.h. er hat auch keine Möglichkeit den Wert zu verändern, wie dies der Fall wäre, wenn der Wert über die URL mitgegeben werden würde. Wie man sieht sind hierbei keinerlei Befehle zum Lesen oder Speichern nötig, dies erledigt baseportal automatisch. <h2>Komplexe Datenstrukturen mitführen</h2> Auch beliebig komplexe Daten können mithilfe des Befehls [564:serial] in der Session mitgeführt werden: <code> <perl> %hash=eval $_session{hash}; # ... $_session{hash}=serial %hash; </perl> </code> Ein klassisches Beispiel ist ein Warenkorb in einem Shop - der Nutzer streift auf den Seiten umher und legt durch Klicken Artikel in seinen Warenkorb. Die Sachen muss man nicht gleich in einer Datenbank speichern, weil er vielleicht garnicht einkauft. Aber merken muss man sich die Artilel natürlich schon - hier sind Sessions sehr gut geeignet: <code> <perl> push @{$_session{Artikel}}, $Artikel if $Artikel ne ""; out "Ihr Warenkorb:".dump($_session{Artikel}); out "Artikel:<ul>"; for (qw(Brot Butter Marmelade)) { out "<li><a href=\"baseportal.pl?htx=$htx&sid=$_session&Artikel=$_\">$_</a><br>"; } out "</ul>"; </perl> </code> <h2>Vor- und Nachteile von Session-Variablen</h2> Session-Variablen sind für alle "flüchtigen" Daten da, die während einer "Sitzung" eines Nutzers mitgeführt werden sollen. Das kann man zwar auch alles in die URL schreiben, aber mit <c>%_session</c> hat man mehrere Vorteile: <ul><li>Sie sind für den Nutzer nicht sichtbar und damit auch nicht veränderbar. Es gibt Fälle in denen das Sinn macht, z.B. um einen Nutzer als "VIP-Kunden" zu kennzeichnen. <li>Man muss die ganzen Werte nicht in jedem Link angeben, es reicht <c>sid=$_session</c>. <li>Es lassen sich mit [564:serial] ganz einfach beliebig komplexe Daten mitführen: <code> $_session{Komplexe_Daten}=serial \%Riesiger_Hash; </code> </ul> Es gibt allerdings auch Werte die man nicht in Session-Variablen speichern, sondern in der URL angeben sollte. Dazu gehören alle Werte die einen Zustand der Seite bestimmen und so bei der Weitergabe oder dem Speichern von Links wichtig sind. Manche Nutzer ändern diese Werte auch gern über die Adressleiste des Browsers. Beispiele sind in baseportal die "Id" eines Datensatzes der im Detail angezeigt wird oder die "range"-Angaben die den Bereich der Ausgabeliste bestimmen. <!-- <h2>Automatisches Speichern der Session in Cookies</h2> baseportal speichert automatisch den Nutzernamen <c>$_user</c> und die Session <c>$_session</c> in Cookies, d.h. das Mitführen dieser Werte über die URL ist nicht zwingend notwendig - sofern Cookies im Browser aktiviert sind. -->
Name:
Passwort:
Stichworte:
Version:
1
2
3 Angebot:
Alle
Nur Miete / Lizenz
Nur Miete / Lizenz professional
Nur Miete
Nur Miete smart + pro
Nur Miete smart + pro / Lizenz
Nur Miete pro
Nur Miete ab pure2, smart2, pro1
Nur Lizenz
Nur Lizenz professional
Nur Kostenlos
Ohne Änderungen zurück zur Seite
-
+
©
baseportal
GmbH. Alle Rechte vorbehalten.
powered in 0.01s by baseportal.de
Erstellen Sie Ihre eigene Web-Datenbank - kostenlos!