Verlautbarung 195 der Entw.Abt. 2006-09-18 ------------------------------- Neues PHPAC liegt bereit! http://ftp.allegro-c.de/aktuelle-version/avanti/phpac.zip ******************** * PHPAC-Neuerungen * ******************** A. Die user-Datenbank B. Sitzungs-Mechanismen C. Radikale Vereinfachung beim Einrichten von Schreibzugriffen A. Die user-Datenbank ===================== Vorteil der user-Datenbank: man braucht keine Nutzerdaten in die eigene Datenbank einzubauen! Das erspart zusaetzliche Parametrierung und haelt sachfremde Daten aus der Datenbank heraus. PHPAC enthaelt dafuer jetzt zwei zusaetzliche Verzeichnisse: user-php ---> An das Web-Root-Verzeichnis des Webservers haengen, am besten als Unterverzeichnis "user", enthaelt Skripte fuer die User-Datenbank. user-db ---> In ein allegro-Datenbankverzeichnis "user" kopieren Leere user-Datenbank mit allem Zubehoer. Völlig unabhängig vom eigenen Schema. Dann in die avanti.conf diese Zeilen einbauen: (sie liegt bei Windows meist auf c:\programme\avanti\etc ) [user] directory = c:\allegro\user (falls user-db dort liegt) access = 3 konfiguration = b indexparameter = user # hier statt ..... ein Server-Passwort eintragen: usr=.....:3 Das hier gesetzte Passwort muss auch in die Zeile $ID der Datei u_ini.php, und zwar gibt es diese Datei sowohl im php-Verzeichnis der user-Datenbank also auch der eigenen Datenbank. Dieses Passwort ist den Endnutzern nicht bekanntzugeben, diese geben sich beim Registrieren selber ein Passwort, das hiermit nichts zu tun hat. Die Zeile in u_ini.php sieht so aus: $ID = "usr/....."; //(mit dem Server-Passwort statt .....) Bei der EIGENEN Datenbank braucht man folgende neuen Dateien (sie sind mit im Unterverzeichnis php von phpac): u_ini.php : fuer die Zugriffe auf die user-Datenbank uregist.htm : Hiermit registriert sich ein neuer user erstmals. uregist.php : wird von uregist.htm gestartet, Traegt die neuen Angaben in die user-Datenbank ein ulogin.htm : Damit loggt sich ein registrierter user ein. ulogin.php : wird von ulogin.htm gestartet, Ermittelt das Passwort fuer die Sitzung, es kommt dann in ein Cookie, der user muss davon nichts wissen) Hat man mehrere eigene Datenbanken, muessen die Dateien jeweils auf jedes der Verzeichnisse. Sekundaeres Passwort In die Datei u_ini.php und in av_ini.php muss man ein "sekundaeres Passwort" setzen, und es muss in beiden Dateien identisch sein: $SPW = "....."; In den PHP-Dateien der User-Datenbank spielt dieses keine Rolle, es geht hier um die eigene Datenbank! Betreibt man mehrere Banken mit derselben user-Datenbank, koennen die sekundaeren Passwoerter auch verschieden sein, nur muss jeweils in der av_ini und in der u_ini dasselbe stehen. Hat man mehrere eigene Datenbanken, koennen deren $SPW verschieden sein, aber jeweils identisch in u_ini.php und av_ini.php. Die 5 Dateien kann man zu jedem PHP-Verzeichnis eigener Datenbanken hinzunehmen, wenn man den neuen user-Komfort mit Schreibzugriffen einrichten will. Wenn fuer zwei Datenbanken die user-Populationen getrennt zu verwalten sind, muss man zwei user-Datenbanken anlegen und fuer jede die entsprechenden Eintraege in der avanti.conf bzw. u_ini.php. Der Systemverwalter kann die user-Datenbank ganz normal mit a99 oder PRESTO bearbeiten. (Die Konfiguration heisst B.CFG). Und jetzt kommt, wie man umgeht mit der user-Datenbank. B. Sitzungs-Mechanismen ======================= Beispiel fuer die Anwendung: http://www.allegro-c.de/classix/ Die Links "Login" und "Registrieren" fuehren zu ulogin.htm bzw. zu uregist.htm. 0. Registrierung ---------------- Jeder Teilnehmer muss sich einmal registrieren, wobei er sich selber ein Passwort gibt. Das geschieht mit der Seite uregist.htm. Das Passwort wird verschlüsselt in der user-Datenbank abgelegt. 1. Sitzungsbeginn ----------------- Die Sitzung beginnt mit der Seite ulogin.htm. Dabei wird ein Cookie gesetzt, das dann bei einer relevanten Aktion als Variable mit dem Namen $uCM mitgeliefert werden muss. Das geschieht normalerweise aus einem Formular heraus mit , und statt ..... ist das Cookie einzusetzen. Das wird am besten mit JavaScript gemacht, siehe 2. Das Cookie wird von ulogin.php geliefert und ist unentschlüsselbar codiert. Darin verquickt ist das "sekundaere Passwort", das dem Endanwender nicht bekannt gemacht wird und unter dem Namen $SPW in av_ini.php und u_ini.php stehen muss (s.o.). Der Systemverwalter kann es jederzeit aendern - alle laufenden Sitzungen werden dann abgebrochen, d.h. die Nutzer muessen ein neues Login machen. Nur in login.php erfolgt ein Zugriff auf die user-Datenbank, um das Passwort zu verifizieren, d.h. nicht bei jeder Transaktion! 2. Verhindern einer Aktion an der Clientseite [Beisp.: in autoform.php] --------------------------------------------- In JavaScript kann man eine Prüfung einbauen, ob das Cookie gesetzt ist, JavaScript kann aber seine Richtigkeit nicht verifizieren - das geht nur per PHP an der Serverseite, also dem Einfluss des Endnutzers nicht zugaenglich (siehe 3.). So geht es: Das