Hi Leute,
ich arbeite derzeit an meinem sessionbasierten Login.
Die momentane Situation:
Wenn sich ein User einloggt, soll er eingeloggt bleiben, bis er sich selbst ausloggt.
Aus diesem Grund speichere ich bestimmte Daten des Users in Sessions ab.
Nach dem sich ein User eingeloggt hat, wird er dann zu einer Seite weitergeleitet, in dem steht, ob sein login erfolgreich oder nicht erfolgreich war und anschließend auf die Startseite.
Das funktioniert soweit auch.
Dort möchte ich dann überprüfen, ob "$_SESSION['loggedIn'] == true" ist oder nicht.
Wenn diese Session true ist, heißt das, dass man eingeloggt ist.
Dann soll "Hallo *Benutzername*" angezeigt werden.
Ist die Session nicht true, soll "Hallo Gast" angezeigt werden.
Das habe ich auch schon so programmiert.
Das Problem an der ganzen Sache ist, dass ich auch nach dem Login (der auch erfolgreich war) immernoch "Hallo Gast" angezeigt bekomme.
D.h. irgendwo muss der Wurm drin sein...
Ich vermute mal, dass ich ein Fehler im "Abrufen" des Loginstatus habe oder im "Abspeichern" des Loginstatus ($Session['loggedIn']).
Hier mein Login-Script:
Es wäre vielleicht gut, zu erwähnen, dass das Design der Website fest definiert ist und nur der Inhalt in einer bestimmten Zeile der Tabelle aufgerufen wird.
Hier noch eine Frage: Wenn sich der User eingeloggt hat und zur Startseite weitergeleitet wird, muss ich dann in der index.php (in der das Design festgelegt ist und in der definiert ist, in welcher Zeile der Tabelle der Inhalt geladen wird) einen bestimmten Code zur Überprüfung des logins einfügen?
Bisher habe ich nur:
Puh....hoffe ich konnte mein Problem einigermaßen verständlich erklären.
Falls ihr Fragen habt, so stellt diese bitte
Für eventuelle Einrückfehler entschuldige ich mich im Voraus, da es gut sein kann, dass es hier im Explorer nicht exakt so übernommen wurde, wie es in meinem Script ist.
Zu erwähnen wäre vielleicht noch, dass ich rein Hobby-mäßig programmiere und ihr daher nachsichtig mit mir umspringen solltet, wenn ich nicht direkt alles verstehe =)
Vielen Dank für euer Verständniss und eure Hilfe.
Hoffe ihr könnt mir weiterhelfen.
LG Zneaf
ich arbeite derzeit an meinem sessionbasierten Login.
Die momentane Situation:
Wenn sich ein User einloggt, soll er eingeloggt bleiben, bis er sich selbst ausloggt.
Aus diesem Grund speichere ich bestimmte Daten des Users in Sessions ab.
Nach dem sich ein User eingeloggt hat, wird er dann zu einer Seite weitergeleitet, in dem steht, ob sein login erfolgreich oder nicht erfolgreich war und anschließend auf die Startseite.
Das funktioniert soweit auch.
Dort möchte ich dann überprüfen, ob "$_SESSION['loggedIn'] == true" ist oder nicht.
Wenn diese Session true ist, heißt das, dass man eingeloggt ist.
Dann soll "Hallo *Benutzername*" angezeigt werden.
Ist die Session nicht true, soll "Hallo Gast" angezeigt werden.
Das habe ich auch schon so programmiert.
Das Problem an der ganzen Sache ist, dass ich auch nach dem Login (der auch erfolgreich war) immernoch "Hallo Gast" angezeigt bekomme.
D.h. irgendwo muss der Wurm drin sein...
Ich vermute mal, dass ich ein Fehler im "Abrufen" des Loginstatus habe oder im "Abspeichern" des Loginstatus ($Session['loggedIn']).
Hier mein Login-Script:
PHP:
<?php session_start(); ?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>Login</title>
</head>
<body link="#333333" vlink="#333333" alink="#333333">
<?php
// Überprüfen, ob das Formular abgeschickt wurde und ob beide Angaben gemacht wurden.
if( isset($_POST['username'], $_POST['password'])
AND
strcmp(trim($_POST['username']),'') != 0
AND
strcmp(trim($_POST['password']),'') != 0 ) {
// Einbinden der Login - Konfigurationsdatei.
include_once 'loginconfig.php';
// Verbindung mit MySQL-Datenbank herstellen.
if( !$connection = mysql_connect( $_config['host'], $_config['user'], $_config['password'] ) ) {
die( 'Verbindung zum Datenbankserver konnte nicht hergestellt werden.' );
}
if( !mysql_select_db( $_config['database'], $connection ) ) {
die ( 'Die Datenbank ' . $_config['database'] . ' kann nicht verwendet werden. <br />
MySQL-Error: <br />' . mysql_error() );
}
// SQL-Anweisung an die Datenbank senden, um erstens herauszufinden, ob
// diese Kombination von Usernamen und Password überhaupt existiert und
// zweitens bei Existenz die Userinformationen auszulesen.
$sql = "SELECT
userid,
username,
password,
acclevel
FROM
user
WHERE
username = '" . trim($_POST['username']) . "'
AND
password = '" . md5(trim($_POST['password'])) . "'";
$res = mysql_query($sql) or die( 'Error[SELECT|User]: <br />
<pre>' . $sql . '</pre>
<br />
MySQL-Error: ' . mysql_error() );
// Nur wenn genau ein Datensatz selektiert wurde, wird der User eingeloggt.
// Ansonsten wird ihm eine Fehlermeldung angezeigt und 5 Sekunden später zum Loginformular zurückgeleitet.
if( mysql_num_rows($res) != 1 ) {
echo "<meta http-equiv='refresh' content='0; url=index.php?site=loginfailed'>";
exit();
}
else {
// Der Schlüssel 'loggedIn' erhält den Wert 'true'. So kann überprüft später werden,
// ob der User eingeloggt ist oder nicht.
$_SESSION['loggedIn'] = true;
// Die userspezifischen Daten werden ausgelesen und der Session hinzugefügt.
$user = mysql_fetch_object($res);
$_SESSION['userid'] = $user->userid;
$_SESSION['username'] = $username->id;
$_SESSION['acclevel'] = $acclevel->acclevel;
// Der Login war erfolgreich und der User bekommt eine Erfolgsmeldung angezeigt.
echo "<meta http-equiv='refresh' content='0; url=index.php?site=logingranted'>";
exit();
}
}
?>
<img src="/images/anmelden_head.jpg" width="526" height="26"><br><br>
<center>
<form action="<?php $_SERVER['PHP_SELF']; ?>" method="post">
<table border="0" cellpadding="0" cellspacing="2">
<tr>
<td width="10"> </td>
<td><font face="Arial" color="333333">Username:</font></td>
</tr>
<tr>
<td width="10"> </td>
<td><input type="text" name="username" size="25" maxlength="25"></td>
</tr>
<tr>
<td width="10"> </td>
<td><font face="Arial" color="333333">Passwort:</font></td>
</tr>
<tr>
<td width="10"> </td>
<td><input type="password" name="password" size="25" maxlength="25"></td>
</tr>
<tr>
<td width="10"> </td>
<td></td>
</tr>
<tr>
<td width="10"> </td>
<td><input type="submit" name="login" value="Anmelden"> <input type="reset" value="Abbrechen" name="reset"></td>
</tr>
</table>
</form>
</center>
</body>
</html>
Hier noch eine Frage: Wenn sich der User eingeloggt hat und zur Startseite weitergeleitet wird, muss ich dann in der index.php (in der das Design festgelegt ist und in der definiert ist, in welcher Zeile der Tabelle der Inhalt geladen wird) einen bestimmten Code zur Überprüfung des logins einfügen?
Bisher habe ich nur:
PHP:
<?php if($_SESSION['loggedIn'] == true){
echo "<div class=\"text\"><font face=\"Arial\" color=\"#333333\">
Hallo <b>".$_SESSION['username']."</b></font></div>";
} else { echo "<div class=\"text\"><font face=\"Arial\" color=\"#333333\">
Hallo <b>Gast</b></font></div>"; }?>
Puh....hoffe ich konnte mein Problem einigermaßen verständlich erklären.
Falls ihr Fragen habt, so stellt diese bitte

Für eventuelle Einrückfehler entschuldige ich mich im Voraus, da es gut sein kann, dass es hier im Explorer nicht exakt so übernommen wurde, wie es in meinem Script ist.
Zu erwähnen wäre vielleicht noch, dass ich rein Hobby-mäßig programmiere und ihr daher nachsichtig mit mir umspringen solltet, wenn ich nicht direkt alles verstehe =)
Vielen Dank für euer Verständniss und eure Hilfe.
Hoffe ihr könnt mir weiterhelfen.
LG Zneaf
