Artikel - Detailansicht

Icon Aktuelles Ein einfaches Loginsystem

Ein einfaches Loginsystem

Eines der Standartaufgaben eines Web-Programierers ist sicher auch die Zugangskontrolle zu einr Website. Damit nicht jeder das Rad neu erfinden muss möchte ich einmal ein einfaches aber recht gut funktionierendes Beispielsystem vorstellen, was wohl hauptsächlich für den Einsteiger interessant sein dürfte.

Die ganze Applikation besteht aus 2 Dateien, der eigentlichen Login-Maske und dem Application-File. Gesteuert wird das ganze über die Session-Variablen , d.h. läuft die Session ab, muss sich der User neu anmelden.

Zuerst fügen wir den nötigen Code in das Application.cfm-File ein:

<CFSETTING ENABLECFOUTPUTONLY="yes">

<cfapplication name=
"myApp"
               sessionmanagement="yes"
               sessiontimeout="#CreateTimeSpan(0,0,20,0)#">

<cfparam name="session.loginOk" default="no">

<cfif not session.loginOk and getFileFromPath(CGI.script_name) neq "login.cfm">
<cflocation url="login.cfm">
</cfif>

<CFSETTING ENABLECFOUTPUTONLY="No">


Zuerst schalten wir mit dem CFSETTING-Tag die Ausgabe in die Webseite ab, d.h. es werden keine Leerzeilen in der zum Browser zu übertragenen HTML-Dokument hinterlassen. Das spart etwas an Übertragungszeit und komprimiert die Dokumentgrösse.
Wir legen dann die Einstellungen für die Applikation fest und setzen mit der CreateTimeSpan()-Funktion ein Session-Timeout von 20 min. Das bedeutet, dass die Session 20 min nach dem letzten Seitenzugriff durch den User abläuft. Die Session-Variablen werden dann selbstständig vom System gelöscht.
In Zeile 7 wird defaultmässig (CFPARAM) eine Sessionvariable (session.loginOk) erzeugt, wenn diese beim Aufruf des Templates application.cfm nicht vorhanden ist. Das ist unser Flag. Wir erkennen daran, ob die Session abgelaufen und der Login verfallen ist, denn der Defaultwert "no" zeigt uns an, ob ein Login durchzuführen ist oder nicht.
Mit dem nachfolgenden CFIF führen wir diese Überprüfung durch. Ist der Defaultwert eingestellt ("no") wird umgeleitet. Das ganze läuft dann folgendermassen ab:
Ruft der User zum ersten mal eine CF-Seite auf, gibt es die Variable session.loginOk nicht. Sie wird dann durch CFPARAM mit dem Wert "no" erzeugt und im CFIF-Statment wird umgeleitet. Ist der User inaktive wird session.loginOk vom System gelöscht und wenn der User sich doch noch entschliesst eine CF-Seite anzusehen wird im Application.cfm wieder defaultmässig session.loginOk="no" erzeugt. Der User muss sich also wieder einlogen.
Will man den User jetzt selbst per Hand ausloggen, kann man z.B. im Programmcode der Session-Variable einfach den Defaultwert zuweisen. Schon kann der User im System nichts mehr machen (bis zum nächten Login).

Nun gibt es in der CFIF-Zeile aber noch eine 2. Bedingung.

  

and getFileFromPath(CGI.script_name) ne "login.cfm"


Dieses Statment sorgt dafür, dass die Datei Login.cfm aufgerufen werden kann, ohne dass eine gültige Session aktive ist. Schliesslich soll die Session ja mit dem Login erst starten. Die angegebenen Seite kann also aufgerufen werden, trotz session.loginOk="no". Man kann hier beliebige Seiten noch dazunehmen, wenn man will.
Es sollte jeder einmal ausprobieren, was passiert, wenn diese 2. Abfragebedingung nicht vorhanden ist :-)

In login.cfm zeigen wir dann ein HTML-Formular an. Um den User jetzt nach erfolgreichem Passwortcheck für das System freizuschalten, müssen wir nur noch die session.loginOk auf den Wert "yes" setzen ("yes" & "no" werden von ColdFusion direkt als boolsche Werte interpretiert und sind bei der Abfrage recht schnell).

Der vollständige Code der login.cfm (den Code für das Application.cfm aber nicht vergessen):

<body>
<CFIF not CompareNoCase(CGI.REQUEST_METHOD,"POST")>

  <!--- POST ------------------------------------->
  <cfparam name="FORM.pw"> 
 <cfif FORM.pw eq "x">
    <!----login erfolgreich, session beginnt--->
    <cfset session.loginOk="yes">
    <cflocation url="weiter.cfm">
  </cfif>

  <!---login falsch, formular nochmal anzeigen---->
  <b>Passwort falsch!</b>
</cfif>
 
<form action="<cfoutput>#CGI.script_name#</cfoutput>" method="post">
        Passwort:<input type="password" name="pw"><br><br>
        <input type="submit">
</form>
</body>




Steffen Goldfuss steffen@goldfuss.de - 07.01.2000

Zurück


Das deutsche ColdFusion-Forum cfml.de ist das Portal für Einsteiger und Experten zum Thema ColdFusion und der ColdFusion Markup Language (CFML).

© 2017 Webdesign & Hosting: CHC ONLINE Kassel | SOLVA Content-Management-System CMS
Urlaub-Angebote.de - Urlaub mit Bestpreis-Garantie buchen