1. Code
  2. PHP

Wie kann man ein voll ausgestattetes Anmeldesystem erstellen?

Scroll to top

German (Deutsch) translation by Katharina Grigorovich-Nevolina (you can also view the original English article)

In diesem Tutorial werde ich Ihnen zeigen, wie Sie ein einfaches Anmeldesystem erstellen, das aus einer Anmeldeseite, einer Registrierungsseite, einer Seite für vergessene Kennwörter, einer E-Mail-Aktivierung, einer Abmeldeseite und schließlich einer Online-Seite für Benutzer besteht. Ich habe dieses Tutorial hauptsächlich für neue PHP-Entwickler erstellt, da ich zu Beginn festgestellt habe, dass es an grundlegenden Anmeldesystemen mangelt. Aus diesem Grund habe ich mich entschlossen, selbst einen zu erstellen, der qualitativ hochwertige Ratschläge gibt, wie Sie Ihr erstes Anmeldesystem mit einem Online-Skript des Benutzers erstellen können!


1. Erstellen eines einfachen Stylesheets

Wir werden ein sehr einfaches CSS-Stylesheet erstellen, um ein wenig Design hinzuzufügen und das Aussehen dieses Anmeldesystems aufzuräumen. Beginnen Sie also auch damit, Ihren Texteditor zu öffnen, und wir können mit der Erstellung unseres Stylesheets beginnen.

1
body { font-family: arial; font-size: 10pt; } table { font-size: 10pt; margin: 0 auto; } #border { border: 2px solid #999; background: #CCC; 
2
padding: 15px; margin: 0 auto; width: 300px; }

Speichern Sie diese Datei als style.css, damit wir sie bei Bedarf wieder verlinken können. Dort haben wir unser einfaches Stylesheet! Jetzt können wir anfangen, unsere Seiten zu erstellen, ohne uns zu viele Sorgen machen zu müssen, dass sie einigermaßen gut aussehen.



2. Anmeldeseite erstellen

Okay, wir haben ein Stylesheet definiert. Jetzt ist es Zeit, dass die Dinge auf unseren Seiten angezeigt werden. Öffnen Sie eine neue Datei in deinem Texteditor, das wird unsere login.php Seite sein!

1
 <link rel="stylesheet" type="text/css" href="tut_files/style.css"> 
2
 
3
 <form action="login.php" method="post"> <div id="border"> <table border="0" cellpadding="2" cellspacing="0"> <tbody><tr> <td>Username:</td> <td><input name="username" type="text"></td> </tr> 
4
<tr> <td>Password:</td> <td><input name="password" type="password"></td> </tr> <tr> <td colspan="2" align="center"><input name="submit" value="Login" type="submit"></td> </tr> <tr> <td 
5
colspan="2" align="center"><a href="register.php">Register</a> | <a href="forgot.php">Forgot Pass</a></td> </tr> </tbody></table> </div> </form>

Okay, so wird unsere login.php-Datei aussehen, bevor wir unser PHP erhalten, damit das Anmeldeformular korrekt funktioniert. Im Moment werden Sie feststellen, dass es nicht funktioniert. Das liegt daran, dass wir der Seite nicht mitgeteilt haben, was zu tun ist, wenn das Formular gesendet wird.

Planung

Lassen Sie uns nun etwas planen, bevor wir uns mit PHP befassen. Wir müssen uns fragen: "Was wird auf der Seite überprüft, wenn das Formular gesendet wird?". Für die Anmeldeseite hier ist eine Liste dessen, was wir überprüfen werden -

  • Dass sowohl das Feld für den Benutzernamen als auch das Passwort ausgefüllt wurden
  • Dass der angegebene Benutzername in unserer Datenbank vorhanden ist
  • Wenn der Benutzername in unserer Datenbank vorhanden ist, stimmt das Kennwort mit dem Kennwort für den Benutzernamen überein
  • Schließlich, dass der Benutzer sein Konto aktiviert hat

Wenn das PHP alle vier Punkte mit Ja beantworten kann, melden Sie den Benutzer an. In diesen vier Punkten werden Sie feststellen, dass eine Datenbank erwähnt wurde. Wir werden eine MySQL-Datenbank verwenden, um alle Informationen über jeden unserer Benutzer zu speichern. Bevor wir mit PHP beginnen, müssen wir diese Datenbank erstellen. An dieser Stelle ist etwas mehr Planung erforderlich. Wir müssen entscheiden, welche Informationen wir über die Benutzer speichern müssen, welche Arten von Daten wir speichern, benötigen wir einen Standardwert usw. usw. Hier ist mein Plan unten -

  • Wir müssen einen Benutzernamen für den Benutzer speichern, der ein varchar sein wird
  • Wir brauchen ein Passwort, das auch ein Varchar sein wird
  • Wir benötigen eine E-Mail für unsere E-Mail-Aktivierungsfunktion. Das kann auch varchar sein
  • Ein Feld, das angibt, ob das Konto aktiviert wurde oder nicht, ist eine Ganzzahl
  • Ein Feld, das Informationen darüber gibt, ob der Benutzer online ist oder nicht, ist eine Ganzzahl
  • Ein Feld, das uns die Zeit angibt, zu der sich der Benutzer registriert hat, ist ebenfalls eine Ganzzahl

Erstellen der Datenbank

Jetzt können wir genau sehen, wie wir unsere Tabelle in unserer Datenbank erstellen. Erstellen Sie zunächst eine Datenbank mit dem Namen loginTut. Dann möchten wir in dieser Datenbank das SQL ausführen, das ich unten bereitgestellt habe -

Hinweis: Alle Tabellen enthalten einen Primärschlüssel. Das ist eine eindeutige Kennung für jede Zeile in der Tabelle!

1
CREATE TABLE IF NOT EXISTS `users` ( `id` int(11) NOT NULL auto_increment, `username` varchar(32) NOT NULL, `password` varchar(32) NOT NULL, 
2
`online` int(20) NOT NULL default 0', `email` varchar(100) NOT NULL, `active` int(1) NOT NULL default ‘0', `rtime` int(20) NOT NULL default 0', PRIMARY KEY (`id`) ) ENGINE=MyISAM DEFAULT 

3
CHARSET=utf8;

Jetzt haben wir eine Tabelle, in der alle Informationen gespeichert werden, die wir über unsere Benutzer benötigen. Fügen wir zu Testzwecken einen Benutzer hinzu. Führen Sie dazu die unten angegebene SQL aus -

1
INSERT INTO `users` (`id`, `username`, `password`, `online`, `email`, `active`, `rtime`) VALUES (1, testing, testing, 0, 
2
fake@noemail.co.uk, 0, 0);

Wir haben jetzt einen Benutzer mit dem Benutzernamen-Testing, dem Passwort-Testing und der E-Mail-Adresse fake@noemail.co.uk. Jetzt können wir zum PHP gelangen und das Anmeldeformular ausarbeiten!

Hinzufügen des PHP

Zuerst müssen wir über die Sicherheit nachdenken und wie sicher dieses Anmeldeformular sein wird. Um SQL Injection zu verhindern, das eine sehr häufige Form des Datenbank-Hackings ist, werden wir eine Funktion erstellen, die alle in der Datenbank gespeicherten Zeichenfolgen schützt. Dies werden wir in eine externe Datei namens functions.php einfügen. Hier ist die Quelle -

1
 <?php 
2
 
3
function protect($string){ $string = trim(strip_tags(addslashes($string))); return $string; } 
4
 
5
?>

Diese Funktion schneidet unsere Zeichenfolge (schneidet Leerzeichen am Anfang oder Ende der Zeichenfolge ab), entfernt Tags (entfernt alle HTML- und PHP-Tags in der Zeichenfolge) und fügt dann der Zeichenfolge Schrägstriche hinzu, die den Sprachmarkierungen(') und entgehen Anführungszeichen(").

Zurück zu login.php

Jetzt haben wir einen Ort zum Speichern und Überprüfen von Benutzerinformationen, eine Funktion zum Schutz der Zeichenfolgen, die an die Datenbank übergeben werden, und ein gut aussehendes Layout für unsere Anmeldeseite! Unten sehen Sie den kommentierten Code für unsere login.php-Datei mit dem neu hinzugefügten PHP-

1
 <link rel="stylesheet" type="text/css" href="tut_files/style.css"> 
2
 
3
 You need to fill in a <strong>Username</strong> and a <strong>Password</strong>!"; }else{ //if the were continue checking 
4
 
5
 //select all rows from the table where the username matches the one entered by the user $res = mysql_query("SELECT * FROM `users` WHERE `username` = '".$username."'"); $num = 
6
mysql_num_rows($res); 
7
 
8
 //check if there was not a match if($num == 0){ //if not display an error message echo "<center>The <strong>Username</strong> you supplied does not exist!</center>"; }else{ //if there was a match 
9
continue checking 
10
 
11
 //select all rows where the username and password match the ones submitted by the user $res = mysql_query("SELECT * FROM `users` WHERE `username` = '".$username."' AND `password` = 
12
'".$password."'"); $num = mysql_num_rows($res); 
13
 
14
 //check if there was not a match if($num == 0){ //if not display error message echo "<center>The <strong>Password</strong> you supplied does not match the one for that username!</center>"; }else{ //if 
15
there was continue checking 
16
 
17
 //split all fields fom the correct row into an associative array $row = mysql_fetch_assoc($res); 
18
 
19
 //check to see if the user has not activated their account yet if($row['active'] != 1){ //if not display error message echo "<center>You have not yet <strong>Activated</strong> your account!</center>"; 
20
}else{ //if they have log them in 
21
 
22
 //set the login session storing there id - we use this to see if they are logged in or not $_SESSION['uid'] = $row['id']; //show message echo "<center>You have successfully logged 
23
in!</center>"; 
24
 
25
 //update the online field to 50 seconds into the future $time = date('U')+50; mysql_query("UPDATE `users` SET `online` = '".$time."' WHERE `id` = '".$_SESSION['uid']."'"); 
26
 
27
 //redirect them to the usersonline page header('Location: usersOnline.php'); } } } } } 
28
 
29
 ?> <form action="login.php" method="post"> <div id="border"> <table border="0" cellpadding="2" cellspacing="0"> <tbody><tr> <td>Username:</td> <td><input name="username" type="text"></td> 
30
</tr> <tr> <td>Password:</td> <td><input name="password" type="password"></td> </tr> <tr> <td colspan="2" align="center"><input name="submit" value="Login" type="submit"></td> </tr> <tr> <td 
31
colspan="2" align="center"><a href="register.php">Register</a> | <a href="forgot.php">Forgot Pass</a></td> </tr> </tbody></table> </div> </form>

Das meiste davon wird durch das Kommentieren erklärt, aber ein Teil, den ich nicht erklärt habe, ist das Online-Feld. Wenn Sie sich erfolgreich angemeldet haben, haben wir das Online-Feld auf 50 Sekunden aktualisiert. Die Datumsfunktion ('U') gibt die Anzahl der Sekunden seit dem 1. Januar 1970 00:00:00 GMT (Unix-Epoche) an. Dies bedeutet, dass das Datum ('U') niemals kleiner wird und der Wert immer zunimmt. Wenn wir das Online-Feld auf 50 Sekunden vor dem Laden der Seite "Benutzer online" setzen, können wir überprüfen, ob alle Benutzer gefunden wurden, bei denen der Online-Wert länger ist als der Zeitpunkt, zu dem die Seite geladen wird. Wenn das der Fall ist, wird angezeigt jeder ihrer Namen.

Testen Sie jetzt Ihre Anmeldeseite. Stellen Sie sicher, dass alle Überprüfungen korrekt durchgeführt werden und dass Sie nach erfolgreicher Anmeldung zur Online-Seite für nicht vorhandene Benutzer weitergeleitet werden. Sie können auch überprüfen, ob das Online-Feld erfolgreich aktualisiert wurde, indem Sie die Tabelle Ihrer Benutzer überprüfen!



3. Erstellen der Registerseite

Was nützt eine Anmeldeseite ohne Registrierungsseite? Überhaupt nicht viel, daher denke ich, dass dies der nächste Schritt für uns sein wird. Das Erstellen der Registerseite wird dem Erstellen unserer Anmeldeseite sehr ähnlich sein. Wir müssen einige grundlegende Überprüfungen durchführen, um festzustellen, ob der gewünschte Benutzername bereits vergeben ist, aber dort passiert nichts Neues. Unten sehen Sie den kommentierten Registerseitencode -

1
 <link rel="stylesheet" type="text/css" href="tut_files/style.css"> 
2
 
3
 You need to fill in all of the required filds!"; }else{ //if all were filled in continue checking 
4
 
5
 //Check if the wanted username is more than 32 or less than 3 charcters long if(strlen($username) > 32 || strlen($username) < 3){ //if it is display error message echo "<center>Your <strong>Username</strong> must be between 3 and 32 characters long!</center>"; }else{ //if not continue checking 
6
 
7
 //select all the rows from out users table where the posted username matches the username stored $res = mysql_query("SELECT * FROM `users` WHERE `username` = '".$username."'"); $num = 
8
mysql_num_rows($res); 
9
 
10
 //check if theres a match if($num == 1){ //if yes the username is taken so display error message echo "<center>The <strong>Username</strong> you have chosen is already taken!</center>"; }else{ 
11
//otherwise continue checking 
12
 
13
 //check if the password is less than 5 or more than 32 characters long if(strlen($password) < 5 || strlen($password) > 32){ //if it is display error message echo "<center>Your <strong>Password</strong> must be between 5 and 32 characters long!</center>"; }else{ //else continue checking 
14
 
15
 //check if the password and confirm password match if($password != $passconf){ //if not display error message echo "<center>The <strong>Password</strong> you supplied did not match the confirmation password!</center>"; }else{ //otherwise continue checking 
16
 
17
 //Set the format we want to check out email address against $checkemail = "/^[a-z0-9]+([_\\.-][a-z0-9]+)*@([a-z0-9]+([\.-][a-z0-9]+)*)+\\.[a-z]{2,}$/i"; 
18
 
19
 //check if the formats match if(!preg_match($checkemail, $email)){ //if not display error message echo "<center>The <strong>E-mail</strong> is not valid, must be name@server.tld!</center>"; }else{ //if they do, continue checking 
20
 
21
 //select all rows from our users table where the emails match $res1 = mysql_query("SELECT * FROM `users` WHERE `email` = '".$email."'"); $num1 = mysql_num_rows($res1); 
22
 
23
 //if the number of matchs is 1 if($num1 == 1){ //the email address supplied is taken so display error message echo "<center>The <strong>E-mail</strong> address you supplied is already taken</center>"; 
24
}else{ //finally, otherwise register there account 
25
 
26
 //time of register (unix) $registerTime = date('U'); 
27
 
28
 //make a code for our activation key $code = md5($username).$registerTime; 
29
 
30
 //insert the row into the database $res2 = mysql_query("INSERT INTO `users` (`username`, `password`, `email`, `rtime`) 
31
VALUES('".$username."','".$password."','".$email."','".$registerTime."')"); 
32
 
33
 //send the email with an email containing the activation link to the supplied email address mail($email, $INFO['chatName'].' registration confirmation', "Thank you for registering to us".$username.",\n\nHere is your activation link. If the link doesn't work copy and paste it into your browser address bar.\n\nhttps://www.yourwebsitehere.co.uk/activate.php?code=".$code, 'From:noreply@youwebsitehere.co.uk'); 
34
 
35
 //display the success message echo "<center>You have successfully registered, please visit you inbox to activate your account!</center>"; } } } } } } } } 
36
 
37
 ?> <div id="border"> <form action="register.php" method="post"> <table border="0" cellpadding="2" cellspacing="0"> <tbody><tr> <td>Username: </td> <td><input name="username" type="text"></td> 
38
</tr> <tr> <td>Password: </td> <td><input name="password" type="password"></td> </tr> <tr> <td>Confirm Password: </td> <td><input name="passconf" type="password"></td> </tr> <tr> <td>Email: 
39
</td> <td><input name="email" size="25" type="text"></td> </tr> <tr> <td colspan="2" align="center"><input name="submit" value="Register" type="submit"></td> </tr> <tr> <td colspan="2" 
40
align="center"><a href="login.php">Login</a> | <a href="forgot.php">Forgot Pass</a></td> </tr> </tbody></table> </form> </div>

Neue Funktionen

Diese Datei enthält einige neue Dinge, mit denen Sie möglicherweise nicht vertraut sind, daher werde ich alles durchgehen. Erstens gibt die Funktion strlen() die Anzahl der Zeichen in einer Zeichenfolge zurück, sodass wir überprüfen können, wie lang die Zeichenfolgen sind. Mit der Funktion preg_match() wird überprüft, ob die Formatierung einer Zeichenfolge mit der von Ihnen angegebenen Formatierung übereinstimmt (in diesem Fall als E-Mail-Format). Schließlich sendet die Funktion mail() eine E-Mail vom Server an eine beliebige E-Mail Ihrer Wahl, die alles enthält, was Sie möchten. Sie sollten diese Datei als register.php speichern

Jetzt können Sie Ihre Registrierungsseite testen. Wenn Sie Ihre korrekte E-Mail-Adresse eingeben, erhalten Sie eine E-Mail mit einem darin enthaltenen Aktivierungslink. Sie können auch sehen, dass eine Zeile mit den in das Formular ausgefüllten Daten in die Benutzertabelle eingegeben wird. Der Wert von active ist 0, was anzeigt, dass dieses Konto noch nicht aktiviert wurde!



4. Aktivieren Sie Ihre Kontoseite

Dies ist nur eine kleine Seite mit sehr wenig Code, aber sie ist immer noch sehr wichtig und spielt eine große Rolle in einem gewissen Anmeldesystem. Die Quelle für diese Seite ist unhaltbar - activate.php

1
 <link rel="stylesheet" type="text/css" href="tut_files/style.css"> 
2
 
3
 Unfortunatly there was an error there!"; }else{ //other wise continue the check 
4
 
5
 //select all the rows where the accounts are not active $res = mysql_query("SELECT * FROM `users` WHERE `active` = '0'"); 
6
 
7
 //loop through this script for each row found not active while($row = mysql_fetch_assoc($res)){ //check if the code from the row in the database matches the one from the user if($code == md5($row['username']).$row['rtime']){ //if it does then activate there account and display success message $res1 = mysql_query("UPDATE `users` SET `active` = '1' WHERE `id` = '".$row['id']."'"); echo "<center>You have successfully activated your account!</center>"; } } } 
8
 
9
 ?>

Es gibt zwei neue Dinge in dieser Datei, wir verwenden die GET-Methode anstelle von POST und wir verwenden auch eine while()-Schleife. Die get-Methode ruft einfach Daten aus der Adressleiste oben im Browser des Benutzers ab (in diesem Fall der Code, der mit der E-Mail an seine E-Mail-Adresse gesendet wird). Die while() - Schleife eignet sich perfekt zum Überprüfen mehrerer aus der Datenbank ausgewählter Datenzeilen (in diesem Fall, um festzustellen, ob eine Übereinstimmung mit den Codes vorliegt).

Übersicht bisher

Bisher sollten Sie viele neue Dinge gelernt haben, wenn Sie neu in PHP sind und erfolgreich die Hälfte eines Anmeldesystems erstellt haben. Die bisher fertiggestellten Seiten sind -

  • style.css
  • functions.php
  • login.php
  • register.php
  • activate.php

Einige nützliche Funktionen, die bisher verwendet wurden, sind -

  • mysql_connect() - Verbindung zu einer MySQL-Datenbank herstellen
  • mysql_select_db() - Wählen Sie die Datenbank aus, mit der wir arbeiten sollen
  • mysql_query () - Senden Sie Abfragen an die Datenbank, um Daten abzurufen, einzufügen oder zu bearbeiten
  • trim() - Schneiden Sie unerwünschte Leerzeichen am Anfang und Ende einer Zeichenfolge aus
  • strip_tags() - Entfernen Sie HTML- und PHP-Tags aus einer Zeichenfolge
  • addslashes() - Fügen Sie der Zeichenfolge Schrägstriche hinzu, damit Anführungszeichen und Sprachmarken sicher verwendet werden können
  • strlen() - Liefert die Anzahl der Zeichen in einer Zeichenfolge
  • preg_match() - Preg-Übereinstimmung entspricht der Formatierung eines Strings
  • mail() - E-Mail vom Server an die angegebene E-Mail-Adresse senden
  • md5() - Das berechnet den md5-Hash eines Strings


5. Haben Sie Ihr Passwort vergessen?

Als nächstes ist unsere Seite mit vergessenen Passwörtern. Wenn der Benutzer sein Passwort vergisst, können wir es ihm per E-Mail senden, sobald wir wissen, dass er aufgrund der Aktivierung eine echte E-Mail-Adresse angegeben hat. Also ohne weiteres hier ist der kommentierte Code für forgot.php -

1
 <link rel="stylesheet" type="text/css" href="tut_files/style.css"> 
2
 
3
 You need to fill in your <strong>E-mail</strong> address!"; }else{ //else continue checking 
4
 
5
 //set the format to check the email against $checkemail = "/^[a-z0-9]+([_\\.-][a-z0-9]+)*@([a-z0-9]+([\.-][a-z0-9]+)*)+\\.[a-z]{2,}$/i"; 
6
 
7
 //check if the email doesnt match the required format if(!preg_match($checkemail, $email)){ //if not then display error message echo "<center><strong>E-mail</strong> is not valid, must be name@server.tld!</center>"; }else{ //otherwise continue checking 
8
 
9
 //select all rows from the database where the emails match $res = mysql_query("SELECT * FROM `users` WHERE `email` = '".$email."'"); $num = mysql_num_rows($res); 
10
 
11
 //check if the number of row matched is equal to 0 if($num == 0){ //if it is display error message echo "<center>The <strong>E-mail</strong> you supplied does not exist in our database!</center>"; }else{ //otherwise complete forgot pass function 
12
 
13
 //split the row into an associative array $row = mysql_fetch_assoc($res); 
14
 
15
 //send email containing their password to their email address mail($email, 'Forgotten Password', "Here is your password: ".$row['password']."\n\nPlease try not too lose it again!", 'From: noreply@yourwebsitehere.co.uk'); 
16
 
17
 //display success message echo "<center>An email has been sent too your email address containing your password!</center>"; } } } } 
18
 
19
 ?> <div id="border"> <form action="forgot.php" method="post"> <table border="0" cellpadding="2" cellspacing="0"> <tbody><tr> <td>Email: </td> <td><input name="email" type="text"></td> </tr> 
20
<tr> <td colspan="2" align="center"><input name="submit" value="Send" type="submit"></td> </tr> <tr> <td colspan="2" align="center"><a href="register.php">Register</a> | <a 
21
href="login.php">Login</a></td> </tr> </tbody></table> </form> </div>

Diese Seite besteht aus nichts Neuem, daher werde ich weniger Zeit damit verbringen, sie zu überprüfen. Eine Sache, die ich erwähnen möchte, ist, dass, wenn Sie es nicht bemerkt haben, weil wir unsere CSS-Datei in jede Seite aufgenommen haben, das Layout, das wir für jede Seite verwenden, sehr ähnlich bleibt und ein schönes, intelligentes Design auf der gesamten Website beibehält.

Die nächste und letzte Seite, die wir in diesem Tutorial machen, wird etwas anders sein. Auf dieser Seite wird geprüft, ob der Benutzer angemeldet ist oder nicht. In diesem Fall werden alle Benutzer zu diesem Zeitpunkt online angezeigt (oder genauer gesagt innerhalb der letzten 50 Sekunden).



6. Die Benutzer-Online-Seite

Okay, wir haben es zu dem Abschnitt der Website geschafft, für den Sie angemeldet sein müssen. Wie ich bereits erwähnt habe, wird sich dieser geringfügig von den anderen unterscheiden, da wir überprüfen müssen, ob der Benutzer angemeldet ist oder nicht. Wenn sie nicht angemeldet sind und versuchen, die Seite anzuzeigen, haben wir einige Optionen, die wir tun können. Das erste ist, dass wir eine Fehlermeldung anzeigen können, die etwas in der Art von "Sie müssen angemeldet sein, um diese Seite anzuzeigen!" Sagen Sie, oder sie können sie zurück zur Anmeldeseite umleiten. Für dieses Tutorial werde ich wahrscheinlich die Fehlermeldungsmethode verwenden.

Hier ist also die Quelle der usersOnline.php-Seite -

1
 <link rel="stylesheet" type="text/css" href="tut_files/style.css"> 
2
 
3
 You need to be logged in to user this feature!"; }else{ //otherwise continue the page 
4
 
5
 //this is out update script which should be used in each page to update the users online time $time = date('U')+50; $update = mysql_query("UPDATE `users` SET `online` = '".$time."' WHERE `id` = '".$_SESSION['uid']."'"); ?> <div id="border"> <table width="100%" border="0" cellpadding="2" cellspacing="0"> <tbody><tr> <td><strong>Users Online:</strong></td> <td> '".date('U')."'"); 
6
 
7
 //loop for each row while($row = mysql_fetch_assoc($res)){ //echo each username found to be online with a dash to split them echo $row['username']." - "; } 
8
 
9
 ?> </td> </tr> <tr> <td colspan="2" align="center"><a href="logout.php">Logout</a></td> </tr> </tbody></table> </div>

Wie ich bereits erwähnt habe, ist diese Seite etwas anders. Wir stellen nicht nur sicher, dass sie angemeldet sind, sondern aktualisieren auch die Online-Zeit, sodass das Online-Feld der aktuellen Zeit voraus ist. Jedes Mal, wenn eine Seite mit diesem Skript geladen wird, wird sie aktualisiert, um sie online zu stellen. Jetzt haben wir noch eine letzte Seite zu erledigen und dann sind wir fertig. Sobald sich ein Benutzer angemeldet hat, muss er sich abmelden können!



Logout.php

Das muss als die am einfachsten zu erstellende Seite angesehen werden, über die sich die meisten von Ihnen sicher freuen. Hier ist der kommentierte Code für die Datei logout.php -

1
 <link rel="stylesheet" type="text/css" href="tut_files/style.css"> 
2
 
3
 You need to be logged in to log out!"; }else{ //if it does continue checking 
4
 
5
 //update to set this users online field to the current time mysql_query("UPDATE `users` SET `online` = '".date('U')."' WHERE `id` = '".$_SESSION['uid']."'"); 
6
 
7
 //destroy all sessions canceling the login session session_destroy(); 
8
 
9
 //display success message echo "<center>You have successfully logged out!</center>"; } 
10
 
11
 ?>

Ich denke, die Kommentare in dieser Datei erklären es genug, und ich denke, Ihr PHP-Wissen sollte jetzt viel höher sein und Sie sollten in der Lage sein, das meiste davon jetzt zu verstehen.