2016-07-21 6 views
-5

Dies ist eine Login-Seite. es gibt 0 zurück, auch den Benutzer und Pass ist rechtsmysqli_num_rows() alwayes return 0 auch der Benutzer hat Recht

session_start(); 
$conn = mysqli_connect('localhost','root','','script'); 

if (isset($_POST['sub'])) { 
    $user = $_POST['user']; 
    $pass = $_POST['pass']; 

    $result = mysqli_query($conn,'SELECT * FROM admin WHERE username = "$user" AND password = "$pass"'); 
    echo mysqli_num_rows($result); 

} 
?> 

`

+1

** Gefahr **: Sie sind anfällig für [SQL injection attacks] (http://bobby-tables.com/) **, die Sie [verteidigen] müssen (http://stackoverflow.com/) Fragen/60174/Best-Way-zu-verhindern-sql-injection-in-php) von. – Quentin

+1

** Gefahr **: "Kein Hashing überhaupt" ist [ein ungeeigneter Hashalgorithmus] (http://php.net/manual/en/faq.passwords.php); Sie müssen die Passwörter Ihrer Benutzer [https://www.owasp.org/index.php/Password_Storage_Cheat_Sheet] [besser beachten] beachten. – Quentin

+0

zeko30 - Nicht sicher, was Ihr Problem ist (vielleicht fragen Sie die falsche Datenbank oder Tabelle falsch?) Aber ... obwohl @ Quentin's Kommentare nicht helfen, Ihre kurzfristigen Probleme zu lösen, * sollten * Sie genau auf sie achten Dennoch. –

Antwort

-1

sollten Dieser Code funktioniert:

session_start(); 
$conn = mysqli_connect('localhost','root','','script'); 

if (isset($_POST['sub'])) { 

    $user = $_POST['user']; 
    $pass = $_POST['pass']; 

$result = mysqli_query($conn,"SELECT * FROM admin WHERE username = '$user' AND password = '$pass'"); 
echo mysqli_num_rows($result); 
} 
?> 

Gerade Zitate ändern.

+0

OMG danke = D – zeko30

1

In PHP begrenzten Zeichenfolgen mit ' Zeichen Variablen nicht interpoliert werden.

Sie suchen nach dem Benutzer namens $ user, nicht der Benutzer angerufen, was in der Variablen $user gespeichert ist.

Der schnelle Hack ist, um Ihre Angebote herum zu tauschen. Die richtige Lösung ist prepared queries with placeholders zu verwenden.

Verwandte Themen