Probleme mit einem Login-Script
Christoph
- php
Hallo,
ich bin ein Newbie in Sachen PHP und habe ein kleines Login-Script für eine Website geschrieben! Leider funktioniert es nicht ganz wie es soll...
Das Problem liegt vermutlich bei der session, da das Array Auth nich regestriert wird.
<?php
session_start();
$CMSAuth = new MyAuth;
$CMSAuth->start();
?>
<?php
class MyAuth {
var $classname = "MyAuth";
var $auth = array(); // Data array
var $databaseTable = "auth_user"; //Tabelle mit User Daten
var $in;
// Mit dieser Funktion wird gestartet
function start(){
// das Array "auth" wird in der Session regestriert
if (! $this->in) {
session_register("auth");
$this->in = true;
}
// State 1: Nicht regestriert
// State 2: Anmeldeprozess läuft -->
// State 3: Regestrierter Benutzer
if($this->isAuthenticated()){
$uid = $this->auth["uid"];
switch($uid){
case "form":
// Anmeldeprozess läuft
$state = 2;
break;
default:
// Der Benutzer ist angemeldet
$state = 3;
break;
}
}else{
// User ist nicht angemeldet
$this->unauth();
$state = 1;
}
switch($state){
case 1:
// Nun wird erst mal das Standartform angezeigt
$this->auth["uid"] = "form";
if(session_is_registered("auth")){
$this->authLoginform();
}
exit;
break;
// Login Fortschritt
case 2:
if ( $uid = $this->auth_validatelogin()) {
$this->auth["uid"] = $uid;
return true;
} else {
$this->auth_loginform;
$this->auth["uid"] = "form";
exit;
}
break;
//Benutzer ist schon angemeldet
case 3:
break;
default:
// Das sollte nicht passiern
echo "Fehler beim Ausführen der myAuth class. \n";
exit;
break;
}// switch state
}// function start
// Überprüfung ob Person schon angemeldet ist
function isAuthenticated(){
if ($this->auth["uid"]){
return $this->auth["uid"];
}else{
return false;
}
}//isAuthenticated()
function authValidateLogin(){
// Global form variables
global $username, $password;
echo "<p>authValidate wird ausgeführt</p>";
if(isset($username)){
$this->auth["uname"] = $username;
}
// uid auf false setzen
$uid = false;
$query = "SELECT
*
FROM
$this->databaseTable
WHERE
username = '$username'
AND password = '$password'
";
// Datenbankenaufbau: ausführen des QueryStrings
$result = mysql_query($query,$DBconn);
if ($result){
if($mysql_num_rows($result) == 1){
$row = mysql_fetch_array($result);
$uid = $row["user_id"];
$this->Auth["uid"] = $uid;
$this->auth["unmae"] = $row["username"];
}// num rows
return($uid);
}//DB Abfrage
}//authValidate
function authLoginform(){
// Ist der Username schon im Array --> min. ein fehlgeschlagener Anmeldeversuch
if(isset($this->auth["uname"])){
include("loginform.ihtml");
}else{
include("loginform.ihtml");
}
}
function unauth($nobody = false) {
$this->auth["uid"] = "";
}
function logout(){
session_unregister("auth");
unset($this->auth["uname"]);
}
// Hilfsfunktion
function url() {
global $PHP_SELF, $QUERY_STRING;
return ($PHP_SELF.
((isset($QUERY_STRING) && ("" != $QUERY_STRING)) ? "?".$QUERY_STRING : ""));
}
}
?>
<?php
include("openDB.inc.php4");
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>Untitled</title>
</head>
<body>
<p>geschuetzter Bereich!</p>
</body>
</html>
kann mir jemand helfen?