Rechte für Seiten | ab Version 3 |
Ebenso wie Datenbanken können Seiten mit einer Nutzer-Datenbank geschützt werden. Sie benötigen dies für nahezu jede komplexere Web-Anwendung.
Legen Sie einfach eine Nutzer-Datenbank für die Seite an und geben Sie den Nutzern das Recht "Ausführen".
Zusätzlich können Sie bei Seiten wählen, was passieren soll, wenn der Nutzer nicht korrekt angemeldet ist ("Ohne korrekte Anmeldung"):
$bonus=10 if $_user ne ""; out "Punkte: ".($punkte+$bonus); out login if $_user eq "";
Die Funktion login gibt das typische Anmeldeformular aus:
out login;
Natürlich kann auch ein eigenes Formular verwendet werden. Dieses muss die Parameter uid für den Namen und upw für das Passwort übermitteln.
Allerdings hat die Verwendung der login-Funktion einen grossen Vorteil: Alle Daten die ein angemeldeter Nutzer übermittelt, werden in das Anmeldeformular übernommen, falls er sich wegen einer abgelaufenen Session neu anmelden muss. Die abgeschickten Daten gehen also nicht verloren, sondern werden nach der Anmeldung gespeichert. Dies gilt selbstverständlich auch für URL-Parameter.
Mit logout können Sie die Session eines Nutzers löschen. Ein Abmelde-Link sieht dann z.B. so aus:
<a href="baseportal.pl?htx=$htx&cmd=logout&sid=$_session">Abmelden</a> <perl> logout if $cmd eq "logout"; </perl>
Oft werden für jeden angemeldeten Nutzer bestimmte Werte benötigt, z.B. sein Realname, das Alter oder das Anmeldedatum. Da die Nutzer-Datenbank eine ganz normale baseportal-Datenbank ist, können diese Werte einfach in zusätzlichen Feldern gespeichert werden. Nach einer Anmeldung stehen die entsprechenden Werte ohne weiteres Zutun in %_user. Haben Sie also beispielsweise ein Feld "Realname" hinzugefügt und dort die echten Namen der Nutzer gespeichert, so können Sie einfach mit $_user{Realname} darauf zugreifen.
Ein komplettes Beispiel mit eigener Anmelde-Prüfung in derselben Seite sieht z.B. so aus:
<perl> logout if $cmd eq "logout"; # Abmelden return out login if $_user eq ""; # Nicht angemeldet # Angemeldet... $link="baseportal.pl?htx=$htx&uid=$_user&sid=$_session"; out "<p><a href=\"$link&cmd=logout\">Abmelden</a></p>"; # Abmelden-Link ausgeben out "Hallo $_user{Realname} ($_user)... ".++$count; out "<p><a href=\"$link&count=$count\">Weiter</a></p>"; # Link mit Nutzernamen und Session </perl>
Sie können dieses Beispiel hier testen. Name und Passwort sind "test".