2012-04-10 11 views
1

Aus irgendeinem Grunde meines PHP Login-Skript hält „ungültige E-Mail/Passwort-Kombination“ Rückkehr, aber ich weiß, dass ich die richtige E-Mail und Passwort eingeben. Kann jemand sehen, was ich falsch mache?Legendes Verschachtelte Wenn .. Else-Anweisungen

<?php 

$email= $_POST['email']; 
$password= $_POST['password']; 

if (!empty($email) && !empty($password)) { 

    $connect= mysqli_connect("localhost", "root", "", "si") or die('error connecting with the database'); 
    $query= "SELECT user_id, email, password FROM users WHERE email='$email' AND    
    password='$password'"; 
    $result= mysqli_query($connect, $query) or die('error with query'); 

    if (mysqli_num_rows($result) == 1) { 
     $row= mysqli_fetch_array($result); 
     setcookie('user_id', $row['user_id']); 
     echo "you are now logged in"; 
    } else { 
     echo "invalid username/password combination"; 
    } 

} else { 
    echo" you must fill out both username and password"; 
} 

?> 
+1

ohne gute Einbuchtung, ist es sehr schwierig ist, den Code ... – dqhendricks

+0

@dqhendricks einfach, es zu verstehen bearbeitet! es :-) –

+0

@dqhendricks ist in Ordnung in der Quelle, behandelt nur SO Tabs als 4 Leerzeichen anstelle der Standard-8 – tobyodavies

Antwort

1

Sie gern bekommen, dass, wenn mysqli_num_rows ($result) nicht gleich 1 ist ... Was ich denke, Sie tun sollen überprüfen, wenn die username und password direkt in der Datenbank vorhanden sein ..... das ist der einzige logische Grund warum in Ihrem Skript sollten Sie bekommen invalid username/password combination

Wenn Sie noch weitere Frage haben lassen Sie mich wissen

+0

Das ist (meistens) wahr, aber warum bekommt man eine "invalid username" Nachricht? Das würde nur passieren, wenn er mehr als 1 Benutzer mit dem gleichen Passwort und der gleichen E-Mail hat ... –

+0

es kann nicht mehr als 1 Benutzernamen und Passwort haben, aber Sie können versuchen, if (mysqli_num_rows ($ result)> 0) 'nur um zu überprüfen, ob das der Fehler ist – Baba

2

ich wechseln würde, es zu sagen,

if (mysqli_num_rows($result) > 0) 

aber ansonsten scheint der Code wie es funktionieren sollte. Sind Sie sicher, dass die $ _POST-Variablen enthalten, was Ihrer Meinung nach darin enthalten sein sollte? Sind Sie sicher, dass diese Benutzer/Passwort-Kombination in Ihrer Datenbank vorhanden ist?

2

Ihr Code sieht gut aus. Ich würde überprüfen Sie folgende Punkte:

Sicherstellen, dass die Abfrage funktioniert. Ich würde die Abfrage aussprechen und in Ihrer Datenbank in Ihrem DB-Programm ausführen und sehen, was die Ergebnisse sind.

Stellen Sie sicher, Sie haben nicht mehr als 1 Benutzer mit dieser E-Mail/Passwort-Kombination - es wird Ihre Zählung Check versauen.

Überprüfen Sie die Details Ihrer Buchung und stellen Sie sicher, dass sie korrekt sind, was Sie in der Datenbank haben (Keine weißen Flecken usw.).

Schließlich würden Sie besser dran, sehen Sie den Code richtig einrücken und Auslegen, wie viel einfacher es hier zu lesen ist: http://codepad.org/DmtMuTpC

0

Der Fehler erscheint, weil es doppelte Daten in der Datenbank war.