PHP-Code:
<?php
/*** KONFIGURATION ***/
// Definiert Konstanten für das Script
define('MD5_ENCRYPT', false); // Aktiviert Verschlüsselung für Passwort. Wenn "true" gesetzt, müssen Passwörter von $usrdata md5-verschlüsselt vorliegen. Standard: false
define('SUCCESS_URL', 'index2.php'); // URL, zu welcher nach erfolgreichen Login umgeleitet wird.
define('START_URL', 'index.php');
define('LOGIN_FORM_URL', 'index.php'); // URL mit Anmeldeformular
// Array mit Benutzerdaten: Besteht aus Array-Elementen mit paarweisen Benutzernamen und Passwörtern
$_SESSION['status']="active";
$usrdata = [
'test1' => [
'usr' =>'test1',
'pwd'=>'LISA123',
],
'test2' => [
'usr' =>'test2',
'pwd'=>'JESUS1',
],
'test3' => [
'usr' =>'test3',
'pwd'=>'LISA123',
]
];
header("Content-Type: text/html; charset=utf-8"); // Melde Browser die verwendete Zeichenkodierung
// PHP-Session starten und aktuellen Stand abfragen
session_start();
sleep(2);
$_SESSION['logged_in'] = (isset($_SESSION['logged_in']) && $_SESSION['logged_in'] === true) ? true : false;
$_SESSION['usr'] = (isset($_SESSION['usr'])) ? $_SESSION['usr'] : '';
$error = array();
if(!isset($_POST['login'])){
header('Location: '.LOGIN_FORM_URL);
}else{
$usr = (!empty($_POST['user']) && trim($_POST['user']) != '') ? $_POST['user'] : false;
$pwd = (!empty($_POST['password']) && trim($_POST['password']) != '') ? $_POST['password'] : false;
if(!$usr || !$pwd){
if(count($error) == 0)
$error[] = "user name and password please";
header('Location: '.START_URL);
}else{
$pwd = (MD5_ENCRYPT === true) ? md5($pwd) : $pwd; // Passwort eingabe MD5-encrypten, falls Option gesetzt ist
foreach($usrdata as $ud){ // Benutzer-Liste durchlaufen und je mit Formular-Eingaben vergleichen
if($usr != $ud['usr'] || $pwd != $ud['pwd'] ){
if(count($error) == 0)
$error[] = "username or password incorrect.";
header('Location: '.START_URL);
}else{
$_SESSION['logged_in'] = true;
$_SESSION['usr'] = $usr;
header('Location: '.SUCCESS_URL);
}
}
}
}
?>
<!doctype html>
<html>
<head>
<meta name="content-type" content="text/html; charset=utf-8" />
<title>Login mistake</title>
</head>
<body>
<ul>
<?php
foreach($error as $out){
?>
<li><?php echo $out; ?></li>
<?php
}
?>
</ul>
<p><a href="<?php echo LOGIN_FORM_URL; ?>">Login</a></p>
</body>
</html>
Auf der Seite für eingeloggte User frage ich dann den User aus der Session Variablen ab und zeige die passenden Daten. Leider wird jedoch immer nur der als letzter im Array definierte User eingeloggt. Bei allen Anderen zeigt es wieder die Login Seite. Wo habe ich den Denkfehler? Fehlt vielleicht nur irgendwo ein Zeichen? Ich bekomme keine Fehlermeldung beim Testen mit wamp64.