2017-11-28 19 views
0

"users"テーブルを持つデータベースがあります。ユーザーテーブルには、「user_id」、「user_first」、「user_last」、「user_email」、「user_phone」、「user_uid」、「user_password」という列があります。 「私は../index.php?login_not_good".Whatを実行する必要があります。SQLはデータベース結果を返しません

if (isset($_POST['submit'])) { 
include 'dbh.inc.php'; 
$uid = $_POST['uid']; 
$pwd = $_POST['password']; 

if(empty($uid) || empty($pwd)) { 
    header("Location: ../index.php?login=empty"); 
    exit(); 
} else { 
    try { 
     $sql = "SELECT * FROM users"; 
     $result = $conn->prepare(
      $sql . "WHERE user_uid = ?" 
     ); 
     $result->bindParam(1, $uid, PDO::PARAM_STR); 
     $result->execute(); 
    } catch (Exception $e) { 
     echo"Bad Query"; 
    } 
    $resultCheck = $result->rowCount(); 
    if ($resultCheck < 1) { 
     header("Location: ../index.php?login_not_good"); 
     exit(); 
    } else { 
     $row = $result->fetch(PDO::FETCH_ASSOC); 
     if($row) { 
      //De-hashing the password 
      $hashedPwdCheck = password_verify($pwd,$row['user_password']); 
      if ($hashedPwdCheck == false) { 
       header("Location: ../index.php?login=error"); 
       exit(); 
      } elseif ($hashedPwdCheck == true) { 
       //Log in the user here 
       $_SESSION['u_id'] = $row['user_id']; 
       $_SESSION['u_first'] = $row['user_first']; 
       $_SESSION['u_last'] = $row['user_last']; 
       $_SESSION['u_email'] = $row['user_email']; 
       $_SESSION['u_uid'] = $row['user_uid']; 
       header("Location: ../index.php?login=login_success"); 
       exit(); 
       } 
      } 
     } 
    } 
} else { 
    header("Location: ../index.php?login=error"); 
    exit(); 
} 

問題は、私は、SQLデータベースに作成された私のUIDとパスワードでログインしようとすると、それが返されていますでしょうか?

+0

を使用することができバリアントはpassword_verifyされているように()がエラーを生成しないのと同じパスワード – Deep

+2

結果?前にスペースが必要です。 $ sql。 "WHERE user_uid =?"またはユーザー$ sql = "SELECT * FROM users"の後。 – tan

+0

データベースに 'user_uid'の存在を確認するには、 –

答えて

1

名前付きパラメータ

$sql = "SELECT * FROM users WHERE user_uid = :uid"; 
$result = $conn->prepare($sql); 
$result->bindParam(':uid', $uid); 
$result->execute(); 
関連する問題