Carrear
Erfahrenes Mitglied
Hi Leute, habe folgendes Problem.Ich bastel an einem
Loginscript für meine Seite.
//Erstmal sorry für den langen Post, aber ohne Code
//wird des nichts ^^
Über dem HEad in der index.php starte ich die Session,
unabhängig davon ob man sich einloggt oder nicht.
Dann include ich im Body in einer Menübox, das Login
formular, welches durch eine If Abfrage durch eine
Statusanzeige und einen Logout Link ersetzt wird, sobald
man eingeloggt ist. Diese includete Datei sieht so aus:
Sobald der Loginbutton geklickt wird, wird aufeinen Link
verwiesen (./index.php?site=login) welcher durch die
Parameterübergabe "site=login" im Contentbereich auf folgende
Datei zur Verarbeitung der eingegebenen Daten weiter
leitet:
Und hier tritt das erste Problem auf. Wenn ich eingeloggt
bin soll die Menübox (erster geposteter Code) sofort zur
Statusanzeig wechseln, momentan ist es aber so, dass man
erst einmal Reloaden muss.
Wenn ich auf den Logout Link klicke wird dann im Content
bereich folgender Code includet:
Und da ist wieder das gleiche Problem. Die Statusanzeige ist
nach dem ausloggen noch solange da, bis ich Reloade.
Ich weiß echt nicht wie ich es machen soll -___-
Wie kann ich dafür sorgen, dass der Switch zwischen Statusanzeige
und Loginformular ohne ein Reload von mir funktioniert?
Mir haben ein paar Leute gesagt es gibt diese header()
Funktion. Doch leider kann ich die ja nicht in der
Login und Logout.php nutzen, weil ich diese beiden Dateien
im Body include.
PS:Mir fällt jetzt erst auf dass ich in diesem Forum weder Text noch Code umbrechen muss *lol*
Loginscript für meine Seite.
//Erstmal sorry für den langen Post, aber ohne Code
//wird des nichts ^^
Über dem HEad in der index.php starte ich die Session,
unabhängig davon ob man sich einloggt oder nicht.
Dann include ich im Body in einer Menübox, das Login
formular, welches durch eine If Abfrage durch eine
Statusanzeige und einen Logout Link ersetzt wird, sobald
man eingeloggt ist. Diese includete Datei sieht so aus:
Code:
<?
if(@$_SESSION['logged_in'] == "TRUE")
{
echo "Willkommen, ".$_SESSION['username']."!<br/><br/>\n";
echo "<table>";
echo " <tr>";
echo " <td>Du bist seid dem </td>";
echo " <td rowspan=\"2\"><img src=\"http://web.icq.com/whitepages/
online?icq=".$_SESSION['icq']."&img=5\" /></td>";
echo " </tr>";
echo " <tr>";
echo " <td>".$_SESSION['regdat']." dabei!</td>";
echo " </tr>";
echo " <tr>";
echo " <td><br/></td>";
echo " </tr>";
echo " <tr>";
echo " <td>Dein letzter Besuch war am <b>".$_SESSION['last_visit']."</b>.</td>";
echo " </tr>";
echo "</table>\n";
echo "<a href=./index.php?site=logout>Logout</a>";
}
else
{
echo "<form action=\"./index.php?site=login\" method=\"post\">\n";
echo " <fieldset>\n";
echo " <legend><b>Login</b></legend>\n";
echo " <table cellpadding=\"3\" cellspacing=\"0\" border=\"0\">\n";
echo " <tr>\n";
echo " <td>Username</td>\n";
echo " <td><input type=\"text\" name=\"username\"
size=\"9\" maxlength=\"20\" /></td>\n";
echo " </tr>\n";
echo " <tr>\n";
echo " <td>Passwort</td>\n";
echo " <td><input type=\"password\" name=\"passwort\"
size=\"9\" /></td>\n";
echo " </tr>\n";
echo " <tr>\n";
echo " <td></td>\n";
echo " <td><input type=\"submit\" name=\"Send\"
value=\"Login\" /></td>\n";
echo " </tr>\n";
echo " </table>\n";
echo " </fieldset>\n";
echo "</form>\n";
}
?>
Sobald der Loginbutton geklickt wird, wird aufeinen Link
verwiesen (./index.php?site=login) welcher durch die
Parameterübergabe "site=login" im Contentbereich auf folgende
Datei zur Verarbeitung der eingegebenen Daten weiter
leitet:
Code:
<?php
if (isset ($_SESSION['logged_in']) && $_SESSION['logged_in'] == "TRUE")
{
die ("Du bist schon eingeloggt");
}
if (!isset ($_POST['username']) || !isset($_POST['passwort']))
{
die("Bitte geben Sie Ihre Benutzerdaten ein!");
}
if (isset ($_POST['username']) && isset($_POST['passwort']))
{
if(preg_match('/[^\'\"\/]{5,12}/', $_POST['username']) == FALSE)
{
$_POST['username'] = "";
unset ($_POST['username']);
die("Bitte geben Sie den Benutzernamen ein!");
}
elseif(preg_match('/[^\'\"\/]{5,12}/', $_POST['passwort']) == FALSE)
{
$_POST['passwort'] = "";
unset ($_POST['passwort']);
die("Bitte geben sie ihr Passwort ein!");
}
else
{
$sql = "SELECT
*
FROM
users
WHERE
username = '".$_POST['username']."'
AND
passwort = '".md5($_POST['passwort'])."'";
$result = mysql_query($sql);
if (!$result)
{
echo "Anfrage ($sql) konnte nicht ausgeführt werden :".mysql_error();
exit;
}
$userdaten = mysql_fetch_assoc($result);
if($_POST['Send'] && mysql_num_rows($result))
{
$_SESSION['logged_in'] = "TRUE";
$_SESSION['username'] = $userdaten['username'];
$_SESSION['last_visit'] = $userdaten['last_visit'];
$_SESSION['icq'] = $userdaten['icq'];
$_SESSION['regdat'] = $userdaten['regdat'];
echo "Sie sind eingeloggt!";
}
else
{
echo "Ihre Benutzerangaben sind falsch";
}
}
}
?>
Und hier tritt das erste Problem auf. Wenn ich eingeloggt
bin soll die Menübox (erster geposteter Code) sofort zur
Statusanzeig wechseln, momentan ist es aber so, dass man
erst einmal Reloaden muss.
Wenn ich auf den Logout Link klicke wird dann im Content
bereich folgender Code includet:
Code:
<?
if (!isset ($_SESSION['logged_in'])) // loggedin Variable vorhanden?
{
$_SESSION['logged_in'] = "";
die("Sie sind bereits ausgeloggt!");
}
if ($_SESSION['logged_in'] != "TRUE") // Login nicht ok?
{
$_SESSION['logged_in'] = "";
die("Sie sind bereits ausgeloggt!"); // Anzeige: Sie sind ausgeloggt.
}
echo "Sie haben sich erfolgreich ausgeloggt";
$_SESSION = array();
session_destroy();
?>
Und da ist wieder das gleiche Problem. Die Statusanzeige ist
nach dem ausloggen noch solange da, bis ich Reloade.
Ich weiß echt nicht wie ich es machen soll -___-
Wie kann ich dafür sorgen, dass der Switch zwischen Statusanzeige
und Loginformular ohne ein Reload von mir funktioniert?
Mir haben ein paar Leute gesagt es gibt diese header()
Funktion. Doch leider kann ich die ja nicht in der
Login und Logout.php nutzen, weil ich diese beiden Dateien
im Body include.
PS:Mir fällt jetzt erst auf dass ich in diesem Forum weder Text noch Code umbrechen muss *lol*