2017-12-28 8 views
-2

Mein Login-Formular sagt immer, dass die Zugangsdaten falsch sind. Das Formular funktionierte, bevor ich es änderte, um entweder Benutzername oder E-Mail zu verwenden. Ich bin mir nicht sicher, was mit meinem Code falsch ist. Ich bin immer noch neu in PHP und MySQL so einfach mit mir.Mein Login-Formular sagt immer, dass die Anmeldedaten falsch sind

/**************** Benutzeranmeldung Funktionen ********************/

function login_user($email, $username, $password, $remember) { 


    $sql = "SELECT password, id FROM users WHERE email = '".escape($email)." || username = ".escape($username)."' AND active = 1"; 

    $result = query($sql); 

    if(row_count($result) == 1) { 

     $row = fetch_array($result); 

     $db_password = $row['password']; 


     if(md5($password) === $db_password) { 

      if($remember == "on") { 

       setcookie('email', $email, time() + 86400); 

      } 


      $_SESSION['email'] = $email; 
      $_SESSION['username'] = $username; 


      return true; 

     } else { 


      return false; 
     } 









     return true; 

    } else { 


     return false; 



    } 



} // end of function 

/**************** in Funktion angemeldet ********************/

function logged_in(){ 

if(isset($_SESSION['email']) || isset($_COOKIE['email'])){ 


    return true; 

} else { 


    return false; 
} 



} 

ich bin nicht sicher, ob jemand kann mir diese

sortieren helfen
+1

Verwenden Sie nicht md5, verwenden Sie etwas anderes. md5 ist einfach ** one way ** –

+0

Sie sind weit offen für SQL-Injektion. Ich bin mir nicht sicher, ob Sie PDO oder Mysqli verwenden, aber Ihre Eingaben sind NICHT sicher. Sehen Sie nach, wie Sie Ihre Anfragen mit [PDO] (https://secure.php.net/manual/en/pdo.prepared-statements.php) und [mysqli] (http://php.net/manual/) sichern können. de/mysqli.quickstart.prepared-statements.php). Dies wird auch eine ganze Reihe von Angebotsproblemen beseitigen. – aynber

+1

Abdulla: MD5 sollte nicht verwendet werden - aber nicht weil es ein Einweg-Hash ist - weil es viel zu einfach (schnell) zu berechnen ist. OP: Sie sollten das beheben und anfangen, vorbereitete/parametrisierte Abfragen zu verwenden, weil Leute Sie nur dazu nörgeln werden, bevor Sie irgendetwas antworten (wie sie sollten) – JimL

Antwort

0

I 2 Apostrophe hinzufügen sollten Ihre SELECT in

function login_user($email, $username, $password, $remember) { 

$sql = "SELECT password, id FROM users WHERE email = '".escape($email)."' 
|| username = '".escape($username)."' AND active = 1"; 
Verwandte Themen