Hallo Jungs.
Ich habe folgendes Problem. Der User loggt sich auf meiner Seite ein und anschließend soll das Login Formular verschwinden und durch einen alternativen Text ausgetauscht werden. Ich habe versucht mit einer IF Anweisung den Status der Session abzufragen und entsprechend eins der beiden Code Elemente zu verwenden (Formular oder alternativer Text). Allerdings klappt das ganze nicht ohne das ich den Browser aktualisiere.
Kann mir jemand helfen? Ihr könnt ja mal unter http://194.94.79.5/~hotkey/ reinschauen, vielleicht hilft das ja mehr ;(
PS: Design ist noch nicht vorhanden und bis jetzt läuft nur die Registrierung, der Login (abgesehen von meinem Problem) und der Link "Kontakt".
WebSite nach Login / Logout automatisch aktualisieren
- King Crusty
- Mitglied
- Beiträge: 209
- Registriert: 20.04.2002 11:58
- Wohnort: Deggendorf - Altötting
- Kontaktdaten:
Ich habe das Problem jetzt ohne irgendwelche Zusatz Skripte gelöst bekommen. Allerdings finde ich diese Variante noch ein wenig schmutzig und der Code sieht auch ziemlich wüst aus.
Diese Variante ist deshalb schmutzig, weil das Formular bereits nach der korrekten Eingabe der Login Daten durch den anderen Inhalt ersetzt wird. Erst wenn ein anderer Link gewählt wird, erkennt das Skript die Session als gestartet an und nutzt die letzte else Anweisung. In Umgekehrter Reihenfolge geht das ganze allerdings noch nicht. Wenn der User den Logout Button clickt, erscheint das Login Formular erst wieder nach einem click auf einen anderen Link. Dafür wird der User im Main durch eine Meldung verabschiedet. Ich denke jedoch das Prob ist nicht so wild. Wer loggt sich schon aus und will gleich wieder rein?
Was haltet ihr von meinem wüsten Code?
Code: Alles auswählen
<?php
/* Start der Session. */
session_start();
/* Daten für die Verbindung zur Datenbank. */
require("php/connect.php");
echo "<!-- Start Status (Login) //-->\n";
echo "<table width=\"100%\" border=\"0\" align=\"center\" cellpadding=\"0\" cellspacing=\"5\">\n";
echo "<form action=\"$PHP_SELF?goto=home\" method=\"post\" enctype=\"application/x-www-form-urlencoded\">\n";
echo " <tr>\n";
echo " <td align=\"left\" valign=\"top\">\n";
echo " <font class=\"status_topic\">\n";
echo " Status:\n";
echo " </font>\n";
echo " </td>\n";
echo " </tr>\n";
/* Prüft, ob eine Session aktiv ist. */
if (!isset($_SESSION['username'])) {
/* Prüft, ob das Formular abgeschickt wurde. */
if (isset($_POST['login_submit'])) {
/* Funktion für die Fehlermeldung. */
function error($info) {
echo " <tr>\n";
echo " <td colspan=\"2\" align=\"left\" valign=\"top\">\n";
echo " <font class=\"status_warn\">\n";
echo " $info\n";
echo " </font>\n";
echo " </td>\n";
echo " </tr>\n";
}
/* Prüft, ob die Variable einen Wert hat und gibt ggf. eine Fehlermeldung aus. */
if (!isset($_POST['username']) || ($_POST['username'] == "Username") || ($_POST['username'] == "")) {
error("Username fehlt.");
$error = true;
} elseif (!isset($_POST['password']) || ($_POST['password'] == "Password") || ($_POST['password'] == "")) {
error("Passwort fehlt.");
$error = true;
} else {
/* Verschlüsselt das Passwort, damit es mit dem in der Datenbank verglichen werden kann. */
$password = $_POST['password'];
$password = md5($password);
/* Vergleicht das Passwort mit dem Eintrag in der Datenbank.
Gibt eine Fehlermeldung aus, wenn das Ergebniss nicht übereinstimmt. */
$query = @mysql_query("SELECT * FROM login WHERE username = '".$_POST['username']."'");
if (!$result = @mysql_fetch_array($query)){
error("Falsche Daten.");
$error = true;
} elseif ($password != $result['password']){
error("Falsche Daten.");
$error = true;
} else {
$username = $result['username'];
$email = $result['email'];
$permission = $result['permission'];
/* Übergibt die Werte der Variablen an die Session.*/
session_register('username', 'email', 'permission');
$error = false;
}
}
}
/* Prüft, ob das Formular abgeschickt wurde oder eine Fehlermeldung erzeugt wurde.
Sonst wird das Formular nicht mehr angzeigt und div. Infos werden angezeigt. */
if (!isset($_POST['login_submit']) || ($error == true)) {
echo " <tr>\n";
echo " <td align=\"center\" valign=\"top\">\n";
echo " <input class=\"status_input\" name=\"username\" type=\"text\" onFocus=\"clearText(this)\" size=\"20\" maxlength=\"40\" value=\"Username\">\n";
echo " </td>\n";
echo " </tr>\n";
echo " <tr>\n";
echo " <td align=\"center\" valign=\"top\">\n";
echo " <input class=\"status_input\" name=\"password\" type=\"password\" onFocus=\"clearText(this)\" size=\"20\" maxlength=\"40\" value=\"Password\">\n";
echo " </td>\n";
echo " </tr>\n";
echo " <tr>\n";
echo " <td align=\"center\" valign=\"top\">\n";
echo " <input class=\"status_input\" name=\"login_submit\" type=\"submit\" value=\"Login\">\n";
echo " </td>\n";
echo " </tr>\n";
echo " <tr>\n";
echo " <td align=\"center\" valign=\"top\">\n";
echo " <a href=\"?goto=register\" class=\"status_link\">Registrieren?</a>\n";
echo " </td>\n";
echo " </tr>\n";
} else {
echo " <tr>\n";
echo " <td align=\"left\" valign=\"top\">\n";
echo " <p class=\"status_p\">\n";
echo " <a href=\"?goto=logout\" class=\"status_link\">Logout</a>\n";
echo " </p>\n";
echo " </td>\n";
echo " </tr>\n";
if (isset($_SESSION['username']) && $goto == logout) {
session_destroy();
}
}
} else {
echo " <tr>\n";
echo " <td align=\"left\" valign=\"top\">\n";
echo " <p class=\"status_p\">\n";
echo " <a href=\"?goto=logout\" class=\"status_link\">Logout</a>\n";
echo " </p>\n";
echo " </td>\n";
echo " </tr>\n";
if (isset($_SESSION['username']) && $goto == logout) {
session_destroy();
}
}
echo "</form>\n";
echo "</table>\n";
echo "<!-- End Status (Login) //-->\n\n";
echo "<!-- Start Status (Wetter) //-->\n";
echo "<table width=\"100%\" border=\"0\" align=\"center\" cellpadding=\"0\" cellspacing=\"5\">\n";
echo " <tr> \n";
echo " <td align=\"left\" valign=\"top\">\n";
echo " <font class=\"status_topic\">\n";
echo " Wetter:\n";
echo " </font>\n";
echo " </td>\n";
echo " </tr>\n";
echo " <tr>\n";
echo " <td align=\"center\" valign=\"top\">\n";
echo " <object\n";
echo " classid=\"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000\"\n";
echo " codebase=\"http://active.macromedia.com/flash2/cabs/swflash.cab#version=4,0,0,0\"\n";
echo " id=deutschland width=\"115\" height=\"130\">\n";
echo " <param name=\"movie\" value=\"http://wetter.rtl.de/extern/generell/generator/deutschland/wetter_home.swf?id=63918&key=7d7d1a003b11059b9058ca107cac197d\">\n";
echo " <param name=\"menu\" value=\"false\">\n";
echo " <param name=\"quality\" value=\"high\">\n";
echo " <param name=\"bgcolor\" value=\"#006699\">\n";
echo " <embed src=\"http://wetter.rtl.de/extern/generell/generator/deutschland/wetter_home.swf?id=63918&key=7d7d1a003b11059b9058ca107cac197d\"\n";
echo " quality=\"high\" menu=\"false\" bgcolor=\"#006699\" width=\"115\" height=\"130\" type=\"application/x-shockwave-flash\"\n";
echo " pluginspage=\"http://www.macromedia.com/shockwave/download/index.cgi?P1_Prod_Version=ShockwaveFlash\">\n";
echo " </embed>\n";
echo " </object>\n";
echo " </td>\n";
echo " </tr>\n";
echo "</table>\n";
echo "<!-- End Status (Wetter) //-->\n\n";
?>
Was haltet ihr von meinem wüsten Code?
Das ist richtig, aber ich habe mich an das Echo gewöhnt und es gibt ja auch noch die Funktion Suchen und Ersetzen 
Außerdem habe ich das ganze noch ein wenig übersichtlicher gestaltet. Ich habe in der index.php den Status der Session über eine entsprechende IF Anweisung abgefragt und abhängig vom Ergebniss die zuständige Datei included. Dadurch wirkt das ganze wieder etwas schlanker und übersichtlicher.
Das Wetter habe ich auch noch in eine extra Datei gesteckt und über die index.php included. Alles in allem sollte ich mir vielleicht erst ein Konzept machen und dann wie ein irrer programmieren
PS: Ich bin doch noch ein Newbie. Ist mein erstes PHP Projekt das ich übers Wochenende zusammengebastelt habe.

Außerdem habe ich das ganze noch ein wenig übersichtlicher gestaltet. Ich habe in der index.php den Status der Session über eine entsprechende IF Anweisung abgefragt und abhängig vom Ergebniss die zuständige Datei included. Dadurch wirkt das ganze wieder etwas schlanker und übersichtlicher.
Das Wetter habe ich auch noch in eine extra Datei gesteckt und über die index.php included. Alles in allem sollte ich mir vielleicht erst ein Konzept machen und dann wie ein irrer programmieren

PS: Ich bin doch noch ein Newbie. Ist mein erstes PHP Projekt das ich übers Wochenende zusammengebastelt habe.