Hallo!
Hier habe ich die Loginform
und hier die Login.php die überprüft ob der Login erfolgreich war und leitet dann zur nächsten Seite weiter wo mit einem Switch der eingeloggte User seine Seite personifiziert angezeigt bekommt. Da es sich nur um wenige User handelt habe ich keine Lust mich mit Datenbanktabellen zu beschäftigen.
Mit dem aktuellen Code klappt die Weiterleitung jedoch immer nur mit dem an letzter Stelle aufgelisteten User des Arrays. Wo liegt mein Fehler?
Hier habe ich die Loginform
HTML-Code:
<section> <div id="login" class="animate form"> <form action="login.php" method="post"> <p align="center"><label><input type="text" name="user" class="noBorder" size="15" /> <font color="#FFFFFF"> username</font></label></p> <p align="center"><label> &nbs p; <input type="password" name="password" class="noBorder" size="15" /><font color="#FFFFFF"> password</font></label> <label><input type="submit" name="login" value="Sign in" class="noBorder" size="15" /></label></p> </form>
und hier die Login.php die überprüft ob der Login erfolgreich war und leitet dann zur nächsten Seite weiter wo mit einem Switch der eingeloggte User seine Seite personifiziert angezeigt bekommt. Da es sich nur um wenige User handelt habe ich keine Lust mich mit Datenbanktabellen zu beschäftigen.
Mit dem aktuellen Code klappt die Weiterleitung jedoch immer nur mit dem an letzter Stelle aufgelisteten User des Arrays. Wo liegt mein Fehler?
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'=>'XXX123',
],
'test2' => [
'usr' =>'test2',
'pwd'=>'YYYY1',
],
'test3' => [
'usr' =>'test3',
'pwd'=>'XXX123',
]
];
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>

Kommentar