2015-10-16 28 views
0

爲什麼不做這項工作,我一直在努力尋找好幾天以下的答案。sql綁定值不發送任何東西

我試圖硬編碼的密碼到聲明和工作,但是當我使用該密碼的變量它什麼都沒有返回。

我也有回聲和打印到處看看有什麼變量是,他們是正確的,因爲在密碼確實被返回PW串密碼

<?php 
    include_once "db.php"; 
     $username = $_POST['user']; 
     $password = $_POST['pass']; 

    echo "Username: "; 

    echo $username; 
    echo "<br>"; 
    echo "Password: ";echo $password; 
    echo "<br>"; 

    function GetPassword() { 

     $db = getDataBase(); 
     $stmt = $db->prepare('SELECT username,password FROM userinfo WHERE username = :user AND password = :pass'); 
     $stmt->bindParam(':user',$username, PDO::PARAM_STR); 
     $stmt->bindParam(':pass', $password, PDO::PARAM_STR); 
     $stmt->execute(); 
     $results = $stmt->fetch(PDO::FETCH_ASSOC); 
     foreach($results as $row){ 
      print_r($row); 
     } 
     return $results; 
    } 

    $realpw = GetPassword(); 

    if($password == $realpw[0]) 
    { 
     echo "Logged in"; 
     json_encode($usernameInput); 
     echo $realpw[0]; 
    }else 
    { 
     echo "invalid username or password"; 
    } 
    ?> 
+1

你真的應該使用PHP的[內置函數(http://jayblanchard.net/proper_password_hashing_with_PHP.html )來處理密碼安全性。如果您使用的PHP版本低於5.5,則可以使用'password_hash()'[兼容包](https://github.com/ircmaxell/password_compat)。 –

+0

請參閱:http://php.net/manual/en/faq.passwords.php – lsklyut

+0

如果你使用'PDO :: FETCH_ASSOC',這個>> if($ password == $ realpw [0]) '可能會讓你失望。 –

回答

2

$ username和$ password超出範圍的功能。您需要將其添加爲參數,這個工作:

function GetPassword($username, $password) { 

    $db = getDataBase(); 
    $stmt = $db->prepare('SELECT username,password FROM userinfo WHERE username = :user AND password = :pass'); 
    $stmt->bindParam(':user',$username, PDO::PARAM_STR); 
    $stmt->bindParam(':pass', $password, PDO::PARAM_STR); 
    $stmt->execute(); 
    $results = $stmt->fetch(PDO::FETCH_ASSOC); 
    foreach($results as $row){ 
     print_r($row); 
    } 
    return $results; 
} 

$realpw = GetPassword($username, $password); 

參考: http://php.net/manual/en/language.variables.scope.php

+1

添加註釋:OP的可能獲取未定義的變量通知,但要麼是抑制它,要麼沒有顯示警告和錯誤,這對開發環境來說是個壞主意。 –

+0

我只需要使用$ realpw ['password']; – Davey

+0

謝謝,這讓我能夠解決腳本中的問題 – Davey

相關問題