MySQL Anmeldung klappt nicht ?
lima-city → Forum → Programmiersprachen → PHP, MySQL & .htaccess
abfrage
anzeigen
benutzername
bereich
code
datenbank
eintrag
eintragen
email
ergebnis
falsch login
fehler
http
limit
login
nachname
spalte
url
verbindung
vorname
-
Hallo
Habe eine MySQL DB anmeldung mit hilfe des Forum erstellt klappt auch wunderbar
hir der code :
<?php $verbindung = mysql_connect("mysql.lima-city.de", "USER......" , ".......") or die("Verbindung zur Datenbank konnte nicht hergestellt werden"); mysql_select_db("db_........_1") or die ("Datenbank konnte nicht ausgewählt werden"); $username = $_POST["username"]; $passwort = $_POST["passwort"]; $vorname = $_POST["vorname"]; $nachname = $_POST["nachname"]; $email = $_POST["email"]; if($passwort != $passwort2 OR $username == "" OR $passwort == "") { echo "Eingabefehler. Bitte alle Felder korekt ausfüllen. <a href=\"eintragen.html\">Zurück</a>"; exit; } $passwort = md5($passwort); $result = mysql_query("SELECT id FROM login WHERE Benutzername = '$username'"); $menge = mysql_num_rows($result); if($menge == 0) { $eintrag = "INSERT INTO login (id, Vorname, Nachname, EMail, Benutzername, Passwort) VALUES ('', '$vorname', '$nachname', '$email', '$username', '$passwort' )"; $eintragen = mysql_query($eintrag); if($eintragen == true) { echo "Benutzername <b>$username</b> wurde erstellt. <a href=\"login.html\">Login</a>"; } else { echo "Fehler beim Speichern des Benutzernames. <a href=\"eintragen.html\">Zurück</a>"; } } else { echo "Benutzername schon vorhanden. <a href=\"eintragen.html\">Zurück</a>"; } ?>
Nur das problem ist der Login
Hier der Code:
<?php session_start(); ?> <?php $verbindung = mysql_connect("mysql.lima-city.de", "USER......." , ".......") or die("Verbindung zur Datenbank konnte nicht hergestellt werden"); mysql_select_db("db_.........._1") or die ("Datenbank konnte nicht ausgewählt werden"); $username = $_POST["username"]; $passwort = md5($_POST["password"]); $abfrage = "SELECT Benutzername FROM login WHERE Benutzername = '$username' LIMIT 1"; $ergebnis = mysql_query($abfrage); $row = mysql_fetch_object($ergebnis); if($row->passwort == $passwort) { $_SESSION["username"] = $username; echo "Login erfolgreich. <br> <a href=\"geheim.php\">Geschützer Bereich</a>"; } else { echo "Benutzername und/oder Passwort waren falsch. <a href=\"login.html\">Login</a>"; } ?>
Er meldet immer Benutzername und/oder Passwort waren falsch. Login , obwol sie richtig sind
Wo liegt der Fehler?
Philip
-
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
Also was wissen wir wenn da steht: "Benutzername und/oder Passwort waren falsch. Login" ?
Richtig! Die Bedingung von
if($row->passwort == $passwort) { $_SESSION["username"] = $username; echo "Login erfolgreich. <br> <a href=\"geheim.php\">Geschützer Bereich</a>"; }
Ist nicht erfüllt. Also sollten wir uns überlegen wieso nicht. Also lass ich mir mal alle Variablen anzeigen, und teste so den Code Schrittweise bis ich den Fehler gefunden habe...Und ein praktischer Nebeneffekt wenn man das ganze selbst macht ist, dass man dabei mehr lernt wie wenn jmd einem den richtigen Code postet. Deshalb versuch es mal selbst und zeig wenigstens ein bisschen Eigeninitative...
Wenn du konkrete Fragen hast, oder an einer Stelle nicht weiterkommst dann frag hier wieder... -
Setze das Session_start()
ganz nach oben auf deine seite es muss das erste sein, was in deiner Datei steht probier´s
danach nochmal -
Das steht doch ganz oben...Das Problem liegt in der Abfrage der DB bzw in der nicht erfüllten If-Anweisung, wie uns die Ausgabe klar und eindeutig sagt...
Beitrag zuletzt geändert: 10.2.2010 22:06:01 von buechsdeluxe -
Ich kann erlich gesagt keine Fehler entdecken, kannst du mir einen Tipp geben?
-
$abfrage = "SELECT Benutzername FROM login WHERE Benutzername = '$username' LIMIT 1";
fällt es dir auf?
Wenn nein:
Du weist MySQL an, dir die Spalte Benutzername auszugeben und nicht die Spalte Passwort, welche du brauchen würdest... -
Hast du dir z.B schon einmal $row->passwort anzeigen lassen? Nur um zu sehen ob überhaupt das richtige ausgelesen wird?!
-
So klapp es auch nicht habe ich schon getestet
$abfrage = "SELECT Benutzername, Passwort FROM login WHERE Benutzername = '$username' LIMIT 1";
//edit: Wie lasse ich mir den row anzeigen?
Beitrag zuletzt geändert: 10.2.2010 22:10:31 von philip-felder -
Lass dir die komplette Zeile (mit dem Befehl * : "SELECT * FROM tabelle WHERE ...") auslesen, mach das Limit weg, er findet ja sowieso nicht mehr wie einen Datensatz da jeder Benutzer nur einmal vorhanden ist.
Dann lass dir $row->passwort anzeigen, und schau ob das richtige drin steht...
So wie man eben eine Ausgabe bei PHP macht, mit echo...
Beitrag zuletzt geändert: 10.2.2010 22:11:59 von buechsdeluxe -
philip-felder schrieb:
So klapp es auch nicht habe ich schon getestet
$abfrage = "SELECT Benutzername, Passwort FROM login WHERE Benutzername = '$username' LIMIT 1";
//edit: Wie lasse ich mir den row anzeigen?
Das MUSS aber so sein!
Hinweis: Feldnamen, die von dieser Funktion zurückgegeben werden, unterscheiden sich in der Groß-/Kleinschreibung.
Quelle: http://de.php.net/mysql_fetch_object
Das heißt du musst deine if-Abfrage so machen:
if($row->Passwort == $passwort)
-
Achso
Vielen Dank hat geklappt :->
Kann man auch ein passendes loguot machen hier steht nix : http://www.php-einfach.de/tuts_mysql_login.php
bb Philip
Beitrag zuletzt geändert: 10.2.2010 22:16:18 von philip-felder -
Gibt ja noch mehr Tutorials...
Tip: Die Session-Variable muss dazu verändert werden... -
Ja, ganz einfach:
<?php session_start(); unset($_SESSION["username"]); ?> weiterer HTML-Code
-
Danke, werde es mal testen
Hat geklappt!
Vielen Dank
Philip
Beitrag zuletzt geändert: 10.2.2010 22:26:30 von philip-felder -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage