Hallo,
ich versuche mir grade an OOP.
Ich möchte ein Loginsystem schreiben. Dafür habe ich eine Userklasse und eine Sessionklasse.
Leider hänge ich beim starten der Session...
Hier erstmal der Code:
Session Klasse
User Klasse
So funktioniert der Login:
Das $login_result gibt true zurück, also sollte die If Bedingung ja eigentlich "starten".
Wenn ich aber var_dump($session) nutze, wird mir die $_SESSION['username'] als NULL und logged_in als false angezeigt.
Wenn ich aber an das Ende der Login Methode echo "..." schreibe, wird mir dies angezeigt. Aber warum funktioniert der Code nicht?
mfg
xFrager
ich versuche mir grade an OOP.
Ich möchte ein Loginsystem schreiben. Dafür habe ich eine Userklasse und eine Sessionklasse.
Leider hänge ich beim starten der Session...
Hier erstmal der Code:
Session Klasse
PHP:
class Session {
private $user;
private $logged_in = false;
public function __construct() {
session_start();
}
public function login($username) {
$_SESSION['username'] = $username;
$this->user = $username;
$this->logged_in = true;
}
public function logout() {
if (isset($_SESSION['username'])) {
unset($_SESSION['username']);
$this->logged_in = false;
}
}
public function getLoginStatus() {
return $this->logged_in;
}
public function getSessionName() {
return $this->user;
}
}
$session = new Session();
User Klasse
PHP:
class User {
private $id;
private $username;
private $password;
private $email;
private $regdate;
private $lastlogin;
public static function authentication($username, $password) {
GLOBAL $db;
$result = $db->query("SELECT * FROM `user` WHERE `username` = '{$username}' AND `password` = '{$password}'");
if($result->num_rows == 1) {
return true;
}
else {
return false;
}
}
}
So funktioniert der Login:
PHP:
if(isset($_POST['login'])) {
$username = $db->escape_string($_POST['user']);
$passwort = $db->escape_string($_POST['pass']);
$login_result = User::authentication($username, $passwort);
//var_dump($login_result);
if($login_result) {
$session->login($username);
}
}
Das $login_result gibt true zurück, also sollte die If Bedingung ja eigentlich "starten".
Wenn ich aber var_dump($session) nutze, wird mir die $_SESSION['username'] als NULL und logged_in als false angezeigt.
Wenn ich aber an das Ende der Login Methode echo "..." schreibe, wird mir dies angezeigt. Aber warum funktioniert der Code nicht?
mfg
xFrager