Bini's Unterrichtsmaterial

Quellcode von login.php

<?php    // login.php bi 2012.02
        //        Demo für SESSIONS mit Timeout und Funktionen

    
session_start();                        // Session wird gestartet!
                                            // Dies muss erfolgen bevor irgend ein anderer Code kommt 
                                            // - Headerinformation

    // ------------------------------------    Wenn Logout gedrückt wurde -> Session löschen
    
if (isset($_POST['logout'])){
        
session_destroy();
    }
    
$ps=$_SERVER['PHP_SELF'];

?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="de" xml:lang="de"> 
     <head>
       <meta http-equiv="content-type" content="text/html; charset=ISO-8859-1" />                       
       <link href="sessions.css" rel="stylesheet" type="text/css" />
       <title>Bini's Unterrichtsmaterial - PHP Sessions</title>
     </head>
<body>
<h1>Bini's Unterrichtsmaterial - PHP Sessions 2</h1>
<h3>Session Login</h3>
<p>Diese erweiterte Variante von Sessions wurde um ein Timeout erweitert.
D.h. erfolgt innerhalb von 20 Sekunden kein Klick auf eine neue Seite, 
so wird die Session automatisch beendet und man muss sich erneut anmelden.
Außerdem wurde die Überpüfung der Zugangsdaten in eine Funktion (include-Datei) 
ausgelagert, so dass Änderungen an den Berechtigungen zentral an einer Stelle 
und nicht in mehreren Daten, durchgeführt werden können.</p>

<h4>Erlaubte Benutzerkonten</h4>

    <table>
    <th>Name</th><th>Passwort</th>
    <tr><td>TestUser</td><td>1234</td></tr>
    <tr><td>Anton</td><td>austirol</td></tr>
    </table>
    
<h4>Hier anmelden</h4>    
    <form action="<?php $ps ?>" method="post">
    <table>
    <tr><td>Name:</td><td><input type="text" name="name"></td></tr>
    <tr><td>Passwort:</td><td><input type="password" name="passwort"></td></tr>
    <tr><td>&nbsp;</td><td><input type="submit" name="einloggen" value="Einloggen"></td></tr>
    </table>
    </form>
    
    <p>
    <a href="seite1.php">Link in den internen Bereich, ohne sich einzuloggen.</a><br />
    (Das entspricht dem Aufrufen der direkten URL im<br />
    Browser, was ja verhindert werden soll)
    </p>

<?php

    
if (isset($_POST['einloggen'])){
        
$name=$_POST['name'];                    // Daten aus dem Formular vom Server holen
        
$passwort=$_POST['passwort'];
        if (!(
$name=='TestUser' and $passwort=='1234') and !($name=='Anton' and $passwort=='austirol')) {
            echo 
"<p class='fehler'>Anmeldung nur mit den festgelegten Benutzerkonten möglich!</p>";
        }
        
        else {                                    
// Daten in Session speichern
            
$_SESSION['sname']=$name;
            
$_SESSION['spasswort']=$passwort;
            
$_SESSION['sseite']=basename($ps);
            
$_SESSION['timeout']=time()+20;        //Timeout wird mit 20 sec festgelegt
            
            // ------------- Weiterleitungs-Skript -----------------
            
echo "<script type='text/javascript'>";
            echo 
"function redirect_user() {";
            echo 
"window.location.replace('seite1.php')"
            echo 
"}";
            echo 
"Timer = setTimeout('redirect_user()' , 0)";
            echo 
"</script>";
            
// -----------------------------------------------------
        
}
    }
?>
</body>
</html>