2017-08-04 3 views
-2

Ich versuche, ein PHP-Benutzernamen und Passwort-Checker zu erstellen, aber nicht bekommen kann, hier zu arbeiten, ist der Code:Überprüfung Benutzername und Passwort PHP

<?php 
$servername = "iphere"; 
$user = "userhere"; 
$pass = "passwordhere"; 
$dbname = "databasehere"; 

try { 
    $username = $_GET['username']; 
    $password = $_GET['password']; 
    $conn = new PDO("mysql:host=$servername;dbname=$dbname", $user, $pass); 
    $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); 
    $stmt = $conn->prepare("SELECT username FROM users WHERE username = :name AND password = :password"); 
    $stmt->bindParam(':name', $username); 
    $stmt->bindParam(':password', $password); 
    $stmt->execute(); 
    $result = $stmt->setFetchMode(PDO::FETCH_ASSOC); 

    if($username == $result && $password == $result) 
    { 
     echo "OK"; 
    } 
    else 
    { 
     echo "not OK"; 
    } 


} 
catch(PDOException $e) { 
    echo "Error"; 
} 
$conn = null; 
?> 

Es sind keine Störungen oder irgendetwas nicht geben . Es hallt einfach gut und das ist es. Nebenbei verwende ich GET für mein anderes Projekt. Also werde ich es später ändern.

+3

** Gefahr **: "Kein Hashing überhaupt" ist [ein ungeeigneter Hashalgorithmus] (http: // php .net/manual/de/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

Vielleicht ist es Zeit zu 'print_r ($ result)'? –

+1

Nie ** EVER ** Passwörter im Klartext speichern – litelite

Antwort

2

Es sei denn, ein Fehler ist, diese:

$result = $stmt->setFetchMode(PDO::FETCH_ASSOC); 

wird immer der Booleschen Wert true.

Sie führen dann diesen Test:

if($username == $result && $password == $result) 

Nicht leere Strings true immer gleich sein wird.


Zählen Sie stattdessen die Anzahl der Zeilen, die von der Datenbank zurückgegeben werden.

+0

Danke, ich reparierte es :) Ich bin völlig neu in diesem. – flyingFISH

0

die Fakten zu ignorieren, dass:

  • Ihr Passwort unverschlüsselt ist
  • Sie bindParam verwenden ohne Grund

dann der Code, den ich so wäre etwas nutzen würde (nicht testen, aufpassen):

+0

Danke, jetzt funktioniert es :) – flyingFISH

Verwandte Themen