probleme beim login mit sessions
-
Hi
folgender Codesession_start(); $SessionID = session_id(); $_SESSION['eingeloggt']; session_register("eingeloggt"); $_SESSION['benutzername']; session_register("benutzername"); $benutzername = $_POST['username']; $passwort = $_POST['passwort']; $passwort = sha1($passwort); $SQL_String_passwort = "SELECT Passwort FROM adminuser WHERE benutzername = '$benutzername'"; $Ergebniss_passwort = mysql_db_query($db_name, $SQL_String_passwort) or die(mysql_error()); $Zeilen = mysql_num_rows($Ergebniss_passwort); if($Zeilen){ if($passwort == mysql_result($Ergebniss_passwort,0, 0)){ $HTTP_SESSION_VARS['eingeloggt'] = 1; $HTTP_SESSION_VARS['benutzername'] = $benutzername; } } if($HTTP_SESSION_VARS['eingeloggt']){ echo "Login erfolgreich"; ?> <?} else{ echo "Login nicht erfolgreich"; }
Das Funktioniert nicht. Ich krieg immer die Meldung Login erfolgreich aber wenn ich dann versuche auf eine andere Seite zu gehn krieg ich immer "bitte erst einloggen"
if($HTTP_SESSION_VARS['eingeloggt']){ }else{echo "bitte erst einloggen"}
Was zum henker mach ich falsch?
-
$HTTP_SESSION_VARS
sollte man ab php4.0.6 nicht mehr benutzen und ist afaik im gegensatz zu $_SESSION
nicht global, deshalb gibts auf der nächsten seite wahrscheinlich einen fehler
-
Erstmal muss auf jeder Seite session_start(); stehen.
Machs so:
session_start(); if (!isset($_SESSION['LogIn'])) { // Führe Login über Form durch // dann abfragen if ($_POST['Password'] == $MyPassword) { $_SESSION['LogIn'] = true; } } // Normaler Inhalt
Und das am besten als Include in jede Datei, die geschützt werden soll.
Übriegens deine MySQL Abfrage kann ich leicht dazu missbrauchen alles in der Datenbank zu tun, was ich möchte (löschen etc.). Da fehlt ein mysql_escape_string().
-
Auch session_register ist nicht mehr aktuell.
Und um das von Henno auszuführen:
SQL-Injetion:
-
was is statt dessen für session_register zu benutzen oder lässt man das einfach weg?
-
ja, wenn du mit $_SESSION arbeitest brauchst du kein sessio_register mehr