2016-08-10 1 views
-1

Так что я не могу решить эту проблему. Он говорит, что пароль или адрес электронной почты/имя пользователя неправильные, и я не знаю, что делать дальше. Кажется, все в порядке.Код входа не работает

Если кто-то может мне помочь, было бы хорошо.

Код:

<?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

Вы не можете использовать ' header() 'после того, как вы создали вывод. – Ben

+0

Вы должны проверить, был ли отправлен запрос, и убедитесь, что '$ password' равен паролю в таблице. Кроме того, 'crypt()' может возвращаться по-разному по всей платформе. Не говоря уже о возможности того, что ваш db будет иметь сортировку, чувствительную к регистру. – frz3993

+0

... если включена буферизация вывода, что обычно не так. –

ответ

0

добавить этот код и попытаться увидеть пароль после хэш

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

таблица поиска пользователя, если хэш пароля и имени пользователя существует

+0

Как я могу сделать эту ошибку! Кажется, что мое поле пароля имеет длину 30. Это, конечно, далеко не так. – Wolfdave

+0

@Wolfdave согласен с ответом. до встречи – synan54

1

Вы можете использовать num_rows

$q = $stmt->execute(); 

if($q->num_rows > 0)