uhh das ist noch aus der register_globals-Zeit. - Heutzutage verwendet man kein session_register() mehr sondern greift einfach auf das Array $_SESSION zu. Werte die man dort schreibt werden am Ende des Scripte abgespeichert und vom nächsten session_start() geladen.
Das zweite Problem dieses Scriptes hier ist SQL-Injection. Durch die Angabe bestimmter Passwörter kann ich das SQL-Statement so verändern, das zB das Passwort an dieser Stelle gar nicht geprüft wird.
Das dritte Problem hast du erkannt. Das Passwort liegt im Klartext sowohl in der Datenbank, als auch in der Session. Allerdings befindet sich ja beides auf dem Server - an den Client geht ja nur die Ausgabe des PHP-Scriptes. Man kann Passwörter in einen Hash umwandeln (md5(), sha1(),...). Da das gleiche Passwort immer den gleichen Hash ergibt, verschlüsselt man einfach die Eingabe ebenfalls und vergleicht die beiden verschlüsselten Werte. Damti kann jemand mit Zugriff auf den Server/die Datenbank das Passwort nicht mehr lesen. Das hilft natürlich nich auf deinem Server - aber es schützt eventuelle andere Accounts des gleichen Users (auch vor dir
.
Nummer vier ist ein logisches Problem. Das Passwort aus der DB wird zusätzlich noch mal mit dem Masterpasswort im PHP-Script verglichen - damit geht nur ein Passwort für alle User - irgendwie kein guter Schutz. Es macht das SQL ziemlich überflüssig.
Am besten mal in das QNet-PHP-Tutorial (
http://tut.php-q.net) gucken
---
Weaverslave