Ankündigung

Einklappen
Keine Ankündigung bisher.

Login klappt nur mit dem letzten User, soll aber mit mehreren Usern funktionieren

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Login klappt nur mit dem letzten User, soll aber mit mehreren Usern funktionieren

    Hallo!
    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">&nbsp;&nbsp;username</font></label></p>
    <p align="center"><label>&nbsp;&nbsp;&nbsp;&nbsp;&nbs p;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <input type="password" name="password" class="noBorder" size="15" /><font color="#FFFFFF">&nbsp;&nbsp;password</font></label>&nbsp;&nbsp;
    <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>

  • #2
    Also wenn du das schon in zwei Foren postest, warum hälst du dann bereits nachgefragte Informationen hier zurück? Damit verhinderst du doch nur, dass dir Leute effektiv helfen können.

    http://www.selfphp.de/forum/showthread.php?t=26118

    Kommentar


    • #3
      Pack das in die dafür vorgesehene Code Tags, ich kann das so nicht anständig lesen.
      Und der Fehler laut deines Titels ist das die Schleife alle User durchläuft und erst die eigentliche Aktion startet nachdem alles durchgelaufen ist.
      Der User Durchlauf und die eigentliche Aktion muss beides in der gleichen Schleife sein.

      Toll auch noch ein Crosspost, hab ich mir umsonst die Mühe gemacht

      Kommentar


      • #4
        Bitte Forenregeln beachten!

        MOD: Geschlossen wegen Crossposting

        Kommentar


        • #5
          Zitat von PN
          ... habe mir das script aus dem Internet downgeloaded und nur die Daten innerhalb des Arrays geändert, deshalb habe ich keine Ahnung warum es nicht funktioniert ...
          MOD: Nach PN in Scriptbörse verschoben und wieder geöffnet

          Kommentar


          • #6
            Kleiner Hinweis am Rande, dass du die Passwörter ohne MD5 oder ähnlicher Verschlüsselung speicherst ist definitiv nicht gut.
            Sonst hätte ich dir gerne geholfen.

            Kommentar


            • #7
              Tira45
              Ein Hash ist keine Verschlüsselung und MD5 sollte nicht für Passwörter verwendet werden.

              Kommentar


              • #8
                Zitat von protestix Beitrag anzeigen
                Tira45
                Ein Hash ist keine Verschlüsselung und MD5 sollte nicht für Passwörter verwendet werden.
                War auf das Beispiel oben bezogen dort ist ja md5 eingebaut...

                Kommentar


                • #9
                  Der ist aber von März, denke nicht das er noch aktuell ist.

                  Kommentar

                  Lädt...
                  X