Einzelnen Beitrag anzeigen
  #1  
Alt 12.03.2018, 12:38:22
mops36 mops36 ist offline
Anfänger
 
Registriert seit: Mar 2018
Alter: 62
Beiträge: 7
Weiterleitung funktioniert nur für einen User

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.
Mit Zitat antworten