Hallo.
Ich habe ein Loginsystem gebastelt. Und was ist daran so besonders? Man kann seine Sitzungen jederzeit beenden. Das heißt: Ich bin am PC eingeloggt, logge mich mit dem Handy auch auf der Seite in den selben Account ein und kann die Sitzung die zwischen dem PC und der Seite besteht beenden. Bis auf mehrere Accounts funktioniert alles .. keine Ahnung was da los ist :D.
Logindaten: - Gast & Wambo.
Da wie gesagt Accountverwaltung (noch) nicht funktioniert, könnt ihr ja in der Zwischenzeit euch gegenseitig die Sitzungen ausknipsen
Finde das Prinzip bzw. die Idee dahinter ganz interessant und daher dachte ich, ich stelle euch das mal vor
PS: Der Code ist Codetechnisch jetzt vllt nicht optional ... habe laaange nichts gemacht und bin gestern abend/heute morgen erst wieder reingekommen
------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Und wie ich das ganze mache, erfahrt ihr hier:
Ich speichere in einer Datenbank alle Sitzungen. Bei jedem aufruf einer geschützten Seite schaut die Datenbank, ob bei dem eintrag mit der Sitzungs-ID $_SESSION['id'] noch TRUE (aktiv) steht.
------------------------------------------------------------------------------------------------------------------------------------------------------------------------
html-seminar.de/woltlab/attachment/401/html-seminar.de/woltlab/attachment/400/
login.php
<?phpsession_start();mysql_connect( "***", "***", "***" );mysql_set_charset("utf-8");mysql_select_db( "***" );$return = mysql_query( "SELECT `active` FROM `login_sessions` WHERE `id` = '". $_SESSION['id'] ."' " );$return = mysql_fetch_assoc( $return );$_SESSION['eingeloggt'] = $return['active'];if( isset( $_SESSION['eingeloggt']) && $_SESSION['eingeloggt'] ){ header( "Location: index.php" );} if( isset( $_POST['button'] ) ){ if( $_POST['button'] === "Anmelden" ) { $userName = htmlspecialchars( $_POST['username'] ); $passwordHash = md5( "Wambo" . $_POST['password'] . "Wambo" ); $result = mysql_query( "SELECT `id`, `firstName`, `surName`, `userName` FROM `users` WHERE `userName` = '".$userName."' AND `passwordHash` = '".$passwordHash."' " ); $result = mysql_fetch_assoc( $result ); if( isset( $result['id'] ) ) { $_SESSION['User-ID'] = $result['id']; $_SESSION['UserRealName'] = $result['firstName']." ".$result['surName']; $_SESSION['UserName'] = $result['userName']; $_SESSION['eingeloggt'] = true; mysql_query( "INSERT INTO `login_sessions` (`user_ID`, `active`, `ipHash`) VALUES ( '".$_SESSION['User-ID']."', true, '". md5( "Wambo" . $_SERVER['REMOTE_ADDR'] . "Wambo" ) ."' ) " ); $result = mysql_query( "SELECT `id` FROM `login_sessions` WHERE `user_ID` = '". $_SESSION['User_ID'] ."' AND `active` = true AND `ipHash` = '". md5( "Wambo" . $_SERVER['REMOTE_ADDR'] . "Wambo" ) ."' " ); $result = mysql_fetch_assoc( $result ); $_SESSION['id'] = $result['id']; header( "Location: index.php" ); } }}?><!DOCTYPE html><html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>Login</title> <script> function cleanInputFieldValue( fieldID ) { document.getElementById( fieldID ).value = ""; if( fieldID === "two" ) { document.getElementById( fieldID ).type = "password"; } } </script> <style> form { width: 200px; } </style> </head> <body> <form action="" method="Post"> <fieldset> <label> <input name="username" type="test" value="Benutzername..." id="one" onclick="cleanInputFieldValue('one')" onfocus="cleanInputFieldValue('one') " /> </label> <label> <input name="password" type="test" value="Passwort..." id="two" onclick="cleanInputFieldValue('two')" onfocus="cleanInputFieldValue('two') " /> </label> <input name="button" type="Submit" value="Anmelden" /> </fieldset> </form> </body></html>
checkLoginSession.php
<?phpsession_start();$mysql_connection = mysql_connect( "***", "***", "***" );mysql_set_charset("utf-8");mysql_select_db( "***" );$return = mysql_query( "SELECT `active` FROM `login_sessions` WHERE `id` = '". $_SESSION['id'] ."' " );$return = mysql_fetch_assoc( $return );$_SESSION['eingeloggt'] = $return['active'];if( !isset( $_SESSION['eingeloggt']) || !$_SESSION['eingeloggt'] ){ header( "Location: login.php" );} ?>
index.php
<?phprequire( "checkLoginSession.php" );?><!DOCTYPE html><html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title></title> </head> <body> <a href="logout.php">logout</a> <fieldset> <legend>Nutzerübersicht</legend> <table border="1"> <tr> <td>id</td> <td>richtiger Name</td> <td>Benutzername</td> </tr> <tr> <td>-</td> <td>-</td> <td>-</td> </tr> <tr> <td> <?php echo $_SESSION['User-ID'] ?> </td> <td> <?php echo $_SESSION['UserRealName'] ?> </td> <td> <?php echo $_SESSION['UserName'] ?> </td> </tr> </table> </fieldset> <fieldset> <table border="1"> <tr> <td>Sitzungs-ID</td> <td>Startdatum</td> <td>aktiv</td> <td>Enddatum</td> </tr> <legend>Übersicht über Sitzungen</legend> <?php /* deaktivieren von Sitzung */ if( isset($_GET['id']) ) { mysql_query("UPDATE `login_sessions` SET `active`=false,`endDate`='".date("Y-m-d H:i:s")."' WHERE `id` = '".$_GET['id']."';"); } /* ------------------------ */ $return = mysql_query( "SELECT * FROM `login_sessions` WHERE `user_ID` = '".$_SESSION['User-ID']."'" ); while( $result = mysql_fetch_assoc($return) ) { $result['active'] = str_replace(0, "false", $result['active']); $result['active'] = str_replace(1, "true", $result['active']); $result['endDate'] = str_replace("0000-00-00 00:00:00", "-- aktiv --", $result['endDate']); echo "<tr>"; echo "<td>".$result['id']."</td>"; echo "<td>".$result['startDate']."</td>"; if( $result['active'] === "true" ) { $result['active'] = "<a href='?id=".$result['id']."'>".$result['active']."</a>"; } echo "<td>".$result['active']."</td>"; echo "<td>".$result['endDate']."</td>"; echo "</tr>"; } ?> </fieldset> </body></html>
logout.php
<?phpsession_start();mysql_connect( "***", "***", "***" );mysql_set_charset("utf-8");mysql_select_db( "***" );mysql_query( "UPDATE `login_sessions` SET `active`=false,`endDate`='".date("Y-m-d H:i:s")."' WHERE `id` = '".$_SESSION['id']."';" );unset( $_SESSION );session_destroy();header("Location: login.php");?>