Login-Formular funktioniert nicht
Tina
- php
Hallo zusammen,
ich sitze seit 2 Tagen an einem Script, dass auf dem bisherigen Webserver einwandfrei funktioniert hat (Anbieterwechsel), aber nun nicht mehr - die config.php funktioniert. Das anmelden.php-Script verweist auf folgendes login-Script, welches normalerweise immer das user.php-Script aufgerufen hat. Jetzt zeigt der Header aber immer 'anmelden.php?Fehler' (siehe Quelltext) - wo ist das Problem? Die Tabellen für die Datenbank habe ich importiert und nicht verändert???? Bin für jede Hilfe dankbar!!!
<?php
// Session starten
include("config.php");
session_start ();
$username = $_POST["name"];
$passwort = $_POST["pass"];
$sql = "SELECT ".
"id, username, nachname, Vorname ".
"FROM ".
"benutzerdaten ".
"WHERE ".
"(username = '".mysql_real_escape_string(trim($_POST["name"]))."') AND ".
"(passwort = '".mysql_real_escape_string(md5(trim($_POST["pass"])))."')";
$result = mysql_query ($sql) or die(mysql_error());
$result = mysql_query($sql);
if (mysql_num_rows ($result) > 0)
{
// Benutzerdaten in ein Array auslesen.
$data = mysql_fetch_array ($result);
// Sessionvariablen erstellen und registrieren
$_SESSION["user_id"] = $data["id"];
$_SESSION["user_username"] = $data["username"];
$_SESSION["user_nachname"] = $data["nachname"];
$_SESSION["user_vorname"] = $data["vorname"];
header ("Location: user.php");
}
else
{
header ("Location: anmelden.php?Fehler");
}
?>
Mahlzeit Tina,
Jetzt zeigt der Header aber immer 'anmelden.php?Fehler' (siehe Quelltext)
Was meinst Du mit "der Header zeigt [...]"?
header() erwartet eine vollständige URL ...
$username = $_POST["name"];
$passwort = $_POST["pass"];
Wozu dieses unsinnige Umkopieren - vor allem, wenn Du weder $username noch $passwort im weiteren Verlauf je wieder verwendest?
MfG,
EKKi
Jetzt zeigt der Header aber immer 'anmelden.php?Fehler' (siehe Quelltext) - wo ist das Problem?
Augenscheinlich sind nicht mehr als null Ergebnisse aus der Anfrage zurückgekommen :)
Das kann mehrere Gründe haben. Fürs debuggen geh doch einfach schrittweise vom einfachsten Fall bis hin zu Deinem Fall: lass das WHERE weg und check mittels var_dump($result); mal das Ergebnis. Wenn das leer ist, ist Deine Datenbank wohl nicht erreichbar. Wenn das voll ist, gabs vielleicht einen Fehler beim Übermitteln der Daten aus dem Formular. var_dump($_POST) könnte die darüber aufschluss geben.
Liebe Grüße,
LSpreee
Moin!
include("config.php");
Ich vermute, Du hast keine Datenbankverbindung.
Ich vermute, Du überträgst die Daten per GET (nach dem Du wegen anfänglicher Probleme, die aber an der Konfiguration lagen, am HTML-Formular herumgespielt hast.)
Ich kann nur vermuten. Du kannst debuggen, also Dir Schritt für Schritt die Inhalte der Variablen ausgeben lassen. Ein
print "<pre>$sql</pre>";
könnte Dir die Augen öffnen.
Und noch etwas:
$sql = "SELECT
id
, username
, nachname
, vorname
FROM
benutzerdaten
WHERE
username
= '".mysql_real_escape_string(trim($_POST["name"]))."'
AND
passwort
= '".mysql_real_escape_string(md5(trim($_POST["pass"])))."'";
Käme dabei wohl etwas besser.
Noch etwas: Passwörter nur mit MD5 zu hashen ist unsicher. Nimm Pfeffer und Salz dazu, sonst kann "jeder" der in den Besitz der Datenbank kommt die Passwörter in recht kurzer Zeit "errechnen".
MFFG (Mit freundlich- friedfertigem Grinsen)
fastix