Session: Problem mit Kundenlogin
Claudia
- php
0 Volker0 Antje Hofmann0 Mulder
Hallo zusammen,
ich probiere jetzt hier seit Tagen mein Kundenlogin in den Griff zu bekommen, aber es klappt nie so wie ich es mir vorstelle.
Im Moment hab ich das Problem, dass er keine User erkennt. Es kommt immer die Meldung "Login fehlgeschlagen", obwohl die Daten in der SQL-Datenbank korrekt sind.
Kann mir da mal jemand weiterhelfen? Ich poste hier mal den Code (natürlich stark zusammengefasst):
login.php:
<form action="login_auth.php" method="post">
<input type=text name=benutzername>
<input type=password name=pass>
<input type=submit name=Submit value=Einloggen>
</form>
login_auth.php:
<?php
session_start();
session_register("benutzername");
?>
<?
include ("sqlconnect.php"); //verbindung zur DB
$ergebnis = mysql_query("SELECT * FROM login WHERE benutzername = '$benutzername' AND pass = '$pass'"); //benutzername und pass mit der DB vergleichen
if (mysql_num_rows($ergebnis)==1){ //wenn benutzername und pass übereinstimmen, dann weitermachen
while ($row = mysql_fetch_array ($ergebnis))
{
echo "sie sind erfolgreich als ".$benutzername." eingeloggt.";
}} else {
echo "Login fehlgeschlagen.";}
?>
Also ich sehe da kein Problem... ich bin aber auch noch relativ neu im Bereich PHP/mySQL und es könnte sein, dass ich etwas übersehen habe.
LG
Claudia
Hallo zusammen,
return hallo; ;-))
mal so ein paar fragen...:
bist du dir sicher das dein include funktioniert?
steht im session file wirklich der benutzname?
hast du mal mit echo $benutzername; den inhalt geprüft?
dto. für $pass...
klappt dein (verborgener sql-connect)?
gruss volker
Hallo Claudia,
<?
include ("sqlconnect.php"); //verbindung zur DB
$ergebnis = mysql_query("SELECT * FROM login WHERE benutzername = '$benutzername' AND pass = '$pass'"); //benutzername und pass mit der DB vergleichen
if (mysql_num_rows($ergebnis)==1){ //wenn benutzername und pass übereinstimmen, dann weitermachen
while ($row = mysql_fetch_array ($ergebnis))
{
echo "sie sind erfolgreich als ".$benutzername." eingeloggt.";
}} else {
echo "Login fehlgeschlagen.";}
?>
ich schätze mal, der Haken ist die Bedingung
if (mysql_num_rows($ergebnis)==1){ }
Überprüfe, welche Ergebnisse der SQL-Select bringt und zwar unabhängig von der Anzahl der Datensätze.
Geht am besten, wenn du dir den Select als String ausgegeben läßt und den Select z.B. über den PHP-Admin ausführst.
Erhälst du hier Ergebnisse liegt der Fehler in der Bedingung bzw. nachfolgenden Schleife.
Erhälst du keine, dann überprüfe mal, ob hinter dem Eintrag in der DB-Tabelle zufällig ein Leerzeichen steht bzw. im übergebenen Namen und Passwort.
Viele Grüße
Antje
Hallo zusammen,
ich probiere jetzt hier seit Tagen mein Kundenlogin in den Griff zu bekommen, aber es klappt nie so wie ich es mir vorstelle.
Im Moment hab ich das Problem, dass er keine User erkennt. Es kommt immer die Meldung "Login fehlgeschlagen", obwohl die Daten in der SQL-Datenbank korrekt sind.
session_start();
session_register("benutzername");
$ergebnis = mysql_query("SELECT * FROM login WHERE benutzername = '$benutzername' AND pass = '$pass'"); //benutzername und pass mit der DB vergleichen
Dein Problem ist, daß $benutzername einmal der Name der Session-Variable ist und zum anderen der Name der Formvariablen.
In der PHP-Standard-Einstellung hat erstere Vorrang, d.h.
"WHERE benutzername = '$benutzername'"
gibt Dir immer den Wert aus der Session-Variablen.
Versuch mal
WHERE benutzername = '$HTTP_POST_VARS["benutzername"]'