2016-08-10 4 views
-1

So kann ich das nicht gelöst bekommen. Es sagt, dass Passwort oder E-Mail/Benutzername falsch ist und ich weiß nicht, was ich als nächstes tun soll. Es scheint, dass alles in Ordnung ist.Login-Code funktioniert nicht

Wenn jemand mir helfen könnte, wäre es nett.

Code:

<?php 
    include 'config.php'; 
    include 'crypt.php'; 

    $username = $_POST['loginName']; 
    $email = $_POST['loginName']; 
    $password = crypt($_POST['loginPassword'], $salt); 

    $stmt = $conn->prepare('SELECT * FROM users WHERE (username = ? or email = ?) AND password = ?'); 
    $stmt->bind_param('sss' , $username, $email, $password); 
    $stmt->execute(); 

    $result = $stmt->get_result(); 
    $row = $result->fetch_assoc(); 
    $count = mysqli_num_rows($result); 

?> 

<html> 
     <head> 
      <title>Market</title> 
      <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" /> 
      <link rel="stylesheet" href="css/style.css" type="text/css" /> 
     </head> 
    <body> 
     <div id="content"> 
      <?php 
      if ($count > 0) { 
       session_start(); 
       $_SESSION['logged'] = true; 
       $_SESSION['username'] = $row['username']; 
       header("Refresh: 2.5; URL= index.php"); 
       ?> 
       <h1 align="center">Nice to see you again <?php echo $_SESSION['username'] ?>! </h1> 
       <?php 
      } 
      else { 
       ?> 
       <h1 align="center"> Password or email/username is wrong! </h1> 
      <?php 
       header("Refresh: 2.5; URL= logreg.php"); 
      } 
      ?> 
     </div> 
    </body> 
</html> 
+0

Sie können 'nicht verwenden header() 'nachdem Sie die Ausgabe generiert haben. – Ben

+0

Sie sollten überprüfen, ob die Anfrage gestellt wurde, und stellen Sie sicher, dass "$ password" gleich dem Passwort in der Tabelle ist. Außerdem kann 'crypt()' auf der Plattform unterschiedlich zurückgeben. Ganz zu schweigen von der Möglichkeit, dass Ihre Datenbank die Groß- und Kleinschreibung berücksichtigt. – frz3993

+0

... es sei denn, Ausgabepufferung ist aktiviert, was normalerweise nicht der Fall ist. –

Antwort

0

diesen Code hinzufügen und versuchen, Passwort nach Hash

$password = crypt($_POST['loginPassword'], $salt); 
echo '<pre>'. $password;die; 

Suche Benutzertabelle zu sehen, ob Passwort-Hash und Benutzernamen existieren

+0

Wie kann ich diesen Fehler machen? Scheint, dass mein Passwortfeld eine Länge von 30 hat. Das ist natürlich viel zu kurz. – Wolfdave

+0

@Wolfdave die Antwort akzeptieren. Tschüss – synan54

1

können Sie verwenden num_rows

Verwandte Themen