<?php
class User {
var $name;
var $id;
var $email;
var $datum;
var $errorlevel;
function logout() {
$sql="UPDATE
user
SET
Session=NULL
WHERE
Session='".session_id()."';";
setcookie("uid");
setcookie("uid", "", time()-3600);
setcookie("pw");
setcookie("pw", "", time()-3600);
$_SESSION = array();
session_destroy();
//echo "<!-- ".$sql." //-->\n";
mysql_query($sql);
}
function login($id) {
$sql="UPDATE
user
SET
Session='".session_id()."'
WHERE
ID='".mysql_real_escape_string($id)."';";
mysql_query($sql);
$this->getUserInfo($id);
$_SESSION['user_id'] = $this->id;
$_SESSION['user_name'] = $this->name;
$_SESSION['user_datum'] = $this->datum;
$_SESSION['user_mail'] = $this->email;
$_SESSION['logged_in'] = true;
header("Location: ".$_SERVER['PHP_SELF']);
}
//gibt die ID bei Erfolg ansonsten false
function get_id_by_name($username) {
$sql = "SELECT
ID
FROM
user
WHERE
Name='".mysql_real_escape_string($username)."'
LIMIT 1;";
$result = mysql_query($sql) or die(mysql_error());
$row = mysql_fetch_object($result);
return (mysql_num_rows($result)==1) ? $row->ID : false;
}
function userIDExists($id) {
$sql = "SELECT
Count(*) as Anzahl
FROM
user
WHERE
ID='".mysql_real_escape_string($id)."'
LIMIT 1;";
$result = mysql_query($sql) or die(mysql_error());
$row = mysql_fetch_object($result);
return ($row->Anzahl==1);
}
//speichert die informationen in den attributen
//gibt nichts zurück
function getUserInfo($id) {
$sql = "SELECT
ID,
Name,
EMail,
DATE_FORMAT(Datum, '".DATE_STYLE."') as Changedatum
FROM
user
WHERE
ID='".mysql_real_escape_string($id)."'
LIMIT 1;";
$result = mysql_query($sql) or die(mysql_error());
$row = mysql_fetch_row($result);
list($this->id,$this->name,$this->email,$this->datum) = $row;
}
//gibt bei erfolg ID zurück. sonst false
function check_user($name, $md5_pass) {
$sql="SELECT
ID
FROM
user
WHERE
Name='".mysql_real_escape_string($name)."' AND Passwort='".mysql_real_escape_string($md5_pass)."'
LIMIT 1;";
$result= mysql_query($sql) or die(mysql_error());
$user=mysql_fetch_object($result);
return (mysql_num_rows($result)==1) ? $user->ID : false;
}
/*$errorlevel: 1 - Formular falsch
2 - Cookie enthält falsche Informationen
3 - Ausgeloggt.
*/
function logged_in() {
if(isset($_SESSION['logged_in']) && $_SESSION['logged_in']===true) { return true; }
$sql="SELECT
ID
FROM
user
WHERE Session='".session_id()."'
LIMIT 1;";
$result=mysql_query($sql);
//$row = mysql_fetch_object($result);
// Session bereits geöffnet
if(mysql_num_rows($result)==1) {
//$this->getUserInfo($row->ID);
// Informationen sollten in Session vorhanden sein!
//echo "<!-- session geöffnet //-->\n";
//echo "<!-- session_id(): ".session_id()." //-->\n";
$this->errorlevel=0;
return true;
}
// Vllt das Formular ausgefüllt?
if(isset($_POST['user'])
&& trim($_POST['user']) != ""
&& isset($_POST['pw'])
&& trim($_POST['pw'])!=""
) {
//richtig ausgefüllt ? userid : false;
$userid = $this->check_user($_POST['user'], md5($_POST['pw']));
if($userid===false) {
//echo "<!-- formular falsch ausgefüllt //-->\n";
$this->errorlevel = 1;
return false;
}
if(isset($_POST['cookie'])) {
setcookie("uid", $userid, time()+(365*24*60*60));
setcookie("pw", md5($_POST['pw']), time()+(365*24*60*60));
}
//die funktion login aktualisiert die attribute
$this->login($userid);
//echo "<!-- formular richtig ausgefüllt //-->\n";
$this->errorlevel = 0;
return true;
}
//vllt ein cookie gesetzt?
if(isset($_COOKIE['uid']) && isset($_COOKIE['pw'])) {
$userid = $_COOKIE['uid'];
//echo "<!-- cookie gesetzt //-->\n";
if(!$this->userIDExists($userid)) {
setcookie("uid");
setcookie("uid", "", time()-3600);
setcookie("pw");
setcookie("pw", "", time()-3600);
//echo "<!-- user existiert nicht //-->\n";
$this->errorlevel = 2;
return false;
}
$this->getUserInfo($userid);
$username = $this->name;
if($this->check_user($username, $_COOKIE['pw'])===false) {
setcookie("uid");
setcookie("uid", "", time()-3600);
setcookie("pw");
setcookie("pw", "", time()-3600);
//echo "<!-- cookie falsch //-->\n";
$this->errorlevel = 2;
return false;
}else{
$this->login($userid);
//echo "<!-- cookie richtig //-->\n";
$this->errorlevel = 0;
return true;
}
}
$this->errorlevel = 3;
//echo "<!-- ausgeloggt //-->\n";
return false;
}
}
?>