2016-04-25 14 views
2

私はちょうどphpで作業を始めました。私は本当にうまくいきません。ユーザのパスワードとユーザ名を確認して、そのユーザとセッションを開始したいユーザーID。しかし、私がuser_idをエコーし​​ようとするたびに、何も戻ってこない。誰かがこれで私を助けることを願っています。私のコードです:パスワード照合でmysqliレコードを受け取ることができません

<?php 
require_once "config.php"; 
$username = $_POST['username']; 
$password = $_POST['password']; 
$hash = password_hash($password, PASSWORD_DEFAULT); 
if (strlen($username) > 0 && strlen($hash) > 0){ 
    $query = "SELECT user_id FROM keep_user WHERE username = '$username' AND password = '$hash'"; 
    $result = mysqli_query($conn , $query); 
    if($conn->query($query) == TRUE){ 
    if(password_verify($password, $hash)){ 
     session_start(); 
     $_SESSION['user_id'] = $user_id; 
     echo $user_id; 
     echo "succes"; 
    }else{ 
     echo "error-1".$conn->error; 
    } 
    }else{ 
     echo "error-2".$conn->error; 
     exit; 
    } 
}else{ 
    echo "error".$conn->error; 
    exit; 
} 
?> 

エコーは成功しますが、私はその部分は良いと推測していますが、なぜuser_idを取得できないのですか?

+0

それを防ぐために、SQLインジェクションのために開いているあなたの結果配列にすでにuser_idのですか? – TechTreeDev

+0

あなたのサイトがユニバーサルスーパーパスワードの標準である「OR 1 = 1--」をサポートしています。クール! –

答えて

2

問題はpassword_verify機能ではありません。あなたは、クエリ2回

$result = mysqli_query($conn , $query);// first time 
    if($conn->query($query) == TRUE){// second time 

を実行するため、問題はちょうどあなたが一番上に

if ($result = $conn->query($query)) { 
    /* fetch associative array */ 
    $row = $result->fetch_assoc() ; 
    $user_id=$row["user_id"]; 
    $_SESSION['user_id'] = $user_id; 

} 

そしてsession_start();としてそれを取得する必要がuser idフォームクエリを取得するには、コメントや$result = mysqli_query($conn , $query);// first time

を削除mysqli_queryでありますあなたのページの

あなたのスクリプトは読むHow can I prevent SQL injection in PHP?

+1

Dayum、10秒速く:D – TechTreeDev

+0

あなたが言ったことは、まだsuccesを受け取った –

+1

それは感謝しました! –

関連する問題