Ankündigung

Einklappen
Keine Ankündigung bisher.

Session abfragen

Einklappen

Neue Werbung 2019

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

  • Session abfragen

    Guten Tag
    und zwar bin ich gerade daran ein simples Login System zu erstellen.
    Dabei habe ich 4 Dateien:

    Index.html (Loginfenster) ;
    login.php (Datenbankzugriff und Überprüfung der Daten) ;
    Dashboard.php (Wenn Zugangsdaten korrekt)
    logout.php (Um die Session zu löschen)

    Also kurz zum Ablauf:

    Wenn die Daten korrekt sind, startet er eine Session und speichert in nem Array, ob er angemeldet ist, sprich: login = true und welchen user.
    Danach wird er auf die Dashboard.php Seite weitergeleitet.
    Dort überprüft er auf der Seite, ob die Session login leer ist und leitet sonst wieder auf die index.html um, wo man sich anmelden kann. Falls diese nicht leer sein sollte, zeigt er nur kurz an, mit welchen Benutzer man angemeldet ist und ob man die Sitzung beenden will.

    Mein Problem:

    Ich möchte die Session auch bei der index.html Seite überprüfen, da man nicht gleich wieder sich neu anmelden muss, wenn man nur die dashboard.php Seite verlassen hat, sondern auch, solange man sich nicht abgemeldet hat, auch wieder direkt auf die dashboard.php Seite weitergeleitet wird.
    Dies funktioniert leider nicht, es passiert schlichtweg gar nichts und der passende PHP Code wird nur angezeigt auf der Seite.

    Codes:

    PHP Code zur Überprüfung ob die Session leer ist bei der index.html:

    PHP-Code:
        <?php
            session_start
    ();
            
    session_regenerate_id();
         
            if (empty(
    $_SESSION['login'])) 
            {
                exit;
            }
            else
            {
                echo 
    "<meta http-equiv='refresh' content='0; URL=../dashboard.php'>    ";
                exit;
            }
        
    ?>
    Session Eintragung bei der Login.php:

    PHP-Code:

    if ($row $result->fetch_array(MYSQLI_ASSOC)) 
                            {
                                if (
    md5($_POST['password']) == $row['password']) 
                                    {
                                        
    session_start();
             
                                        
    $_SESSION = array(
                                                            
    'login' => true,
                                                            
    'user'  => array('username'  => $row['username'] )              
                                                         );

                                        
    $message['success'] = 'Anmeldung erfolgreich, <a href="dashboard.php">weiter zum Inhalt.';
                                                

                                                
                                                
    mysqli_query($mysqli"UPDATE users Set lastlogin = NOW() WHERE id = 1");                      // Lastlogin wird aktualisiert
                                                
    mysqli_query($mysqli"UPDATE users Set onlinestatus = 1 WHERE id = 1");                      // Onlinestatus wird auf 1 gesetzt
                                                
    header("Location: dashboard.php");

                                                exit();


                                    } 

                                else 
                                    {
                                        
    $message['error'] = 'Das Kennwort ist nicht korrekt.';
                                    }
                            } 

                        else 
                            
                            {
                                
    $message['error'] = 'Der Benutzer wurde nicht gefunden.';
                            } 
    Überprüfung ob die Session leer ist bei der Dashboard.php:

    PHP-Code:

    <?php
        session_start
    ();
        
    session_regenerate_id();
     
        if (empty(
    $_SESSION['login'])) 
        {
            echo 
    "<meta http-equiv='refresh' content='1; URL=../index.html'>    ";
            exit;
        } 
        else 
        {
            
    $login_status '
                                <div style="border: 1px solid black">
                                    Sie sind als <strong>' 
    htmlspecialchars($_SESSION['user']['username']) . '</strong> angemeldet.<br />
                                    <a href="./logout.php">Sitzung beenden</a>
                                </div>
                            '
    ;
            

            
        }
    ?>
    Session Löschung bei der logout.php:

    PHP-Code:

    <?php
        session_start
    ();
        
    $_SESSION = array();

        
    $mysqli = @new mysqli('localhost''xxx''xxx''xxx');
        
    mysqli_query($mysqli"UPDATE users Set onlinestatus = 0 WHERE id = 1"); // Onlinestatus wird auf 0 gesetzt

        
    if (ini_get('session.use_cookies')) {
            
    $params session_get_cookie_params();
            
    setcookie(
                
    session_name(),
                
    '',
                
    time() - 42000,
                
    $params['path'],
                
    $params['domain'],
                
    $params['secure"'],
                
    $params['httponly']
            );
        }
        
    session_destroy();

        echo 
    "<p>Sie wurden erfolgreich abgemeldet! Sie werden in 5 Sekunden automatisch weitergeleitet.</p>";
        echo 
    "<p>Falls die automatische Weiterleitung nicht funktioniert, klicken Sie <a href='../index.html' style='color:red'>hier</a>.";
        echo 
    "<meta http-equiv='refresh' content='5; URL=../index.html'>    ";
          exit;
    ?>

    Ich hoffe ihr könnt mir da weiterhelfen, weil ich finde den Fehler einfach nicht, habe bestimmt einfach nur mal wieder Tomaten auf den Augen..

    Vielen Dank im vorraus!


  • #2
    Edit: (Aus versehen doppelt abgeschickt)

    Kommentar


    • #3
      PHP Code zur Überprüfung ob die Session leer ist bei der index.html:
      Das kann ja schonmal nicht funktionieren, wenn der Server keine Sondereinstellung bekommen hat, die ihm erlaubt, .html-Dateien per PHP zu verarbeiten.
      Zitat von nikosch
      Macht doch alle was Ihr wollt mit Eurem Billigscheiß. Von mir aus sollen alle Eure Server abrauchen.

      Kommentar


      • #4
        Oh, stimmt. Dankeschön!
        Ich sollte mir angewöhnen direkt .php zu machen, dann würden mir so welche peinlichen Fehler nicht passieren.

        Aber Dankeschön!

        Kommentar

        Lädt...
        X