2016-08-10 9 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()'はプラットフォーム間で異なって返すことができます。大文字と小文字を区別して照合する可能性はもちろんです。 – frz3993

+0

...一般的ではない出力バッファリングが有効になっていない場合 –

答えて

0

パスワードハッシュとユーザー名が

+0

どうすればこのミスをすることができますか?パスワードフィールドの長さが30であると思われます。 – Wolfdave

+0

@Wolfdaveは答えを受け入れます。ああ参照してください – synan54

1

を存在する場合は、num_rows

を使用することができ、このコードを追加して、ハッシュ

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

検索ユーザーテーブルの後にパスワードを確認してみてください

$q = $stmt->execute(); 

if($q->num_rows > 0) 
関連する問題