2017-01-18 5 views
0

ユーザレコードを検索し、ユーザIDをPHP変数に保存して後で使用する準備ができました。私は変数の内容をエコーし​​たいと思います。 Preparedステートメントを使用して結果を確認するにはどうすればよいですか?Preparedステートメントを使用してPHPの変数にMySQL SELECT結果を保存します。

マイCODE:

if(!defined("noStartup")){ 
$scriptname = basename($_SERVER["PHP_SELF"]); 
$phpbmsSession = new phpbmsSession; 

//Testing for API login 
if(strpos($scriptname,"api_")!==false){ 
    if(isset($_POST["phpbmsusername"]) && isset($_POST["phpbmspassword"])){ 
     $phpbmsSession->loadDBSettings(); 

     include_once("include/db.php"); 
     $db = new db(); 
     $phpbmsSession->db = $db; 

     include_once("common_functions.php");   
     $phpbmsSession->loadSettings($sqlEncoding); 
     $phpbms = new phpbms($db); 


     if(!$phpbmsSession->verifyAPILogin($_POST["phpbmsusername"],$_POST["phpbmspassword"],ENCRYPTION_SEED)) 
      $error = new appError(-700,"","Login credentials incorrect",true,true,true,"json"); 
    } else 
     $error= new appError(-710,"","No login credentials passed",true,true,true,"json"); 
} else { 

    $phpbmsSession->loadDBSettings($sqlEncoding); 


    include_once("include/db.php"); 
    $db = new db(); 

    $phpbmsSession->db = $db; 

    $phpbmsSession->loadSettings($sqlEncoding); 

    include_once("common_functions.php"); 
    $phpbms = new phpbms($db); 

    if(!isset($noSession)) 
     $phpbmsSession->startSession(); 

     if (!isset($_SESSION["userinfo"]) && $scriptname != "index.php") { 

     if(isset($loginNoKick)){ 
      if(!isset($loginNoDisplayError)) 
       exit(); 
     } else{ 
      goURL(APP_PATH."index.php"); 
     } 
     } 

    } 

    $db->stopOnError=true; 
}//end if 

そして検証機能:

さらにより

if ((isset($_POST['overrideUsername'])) and (isset($_POST['overridePassword'])) and (isset($_POST['overrideUniqueID']))) { 



    $overridePasswordInput = $_POST['overridePassword']; 
    $overrideUsernameInput = $_POST['overrideUsername']; 
    $roleID = '154'; 
    $overrideUniqueID = $_POST['overrideUniqueID']; 

    //Not sure how to properly compare stored passwords vs password given by user... 
    $overridePassword = mysqli_real_escape_string($overridePasswordInput); 
    $overrideUsername = mysqli_real_escape_string($overrideUsernameInput); 





    //connect to the database 
    $conn = new mysqli($servername, $username, $password, $dbname); 

    // Check connection 
    if(mysqli_connect_errno()) { 
     printf('Could not connect: ' . mysqli_connect_error()); 
     exit(); 
    } 

    $conn->select_db($dbname); 

    if(! $conn->select_db($dbname)) { 
     echo 'Could not select database. '.'<BR>'; 
    } 


$sql1 = "SELECT users.id FROM users WHERE (users.login = ?) AND (users.password = ?)"; 

    $stmt1 = $conn->prepare($sql1); 
    $stmt1->bind_param('ss', $overrideUsername, $overridePassword); 
    $stmt1->execute(); 
    $stmt1->bind_result($userID);  
    $stmt1->get_result(); 


    if ($stmt1->get_result()) { 

     echo $userID; 

    } else { 

     echo 'User credentials incorrect. Please try again'; 

    } 

$stmt1->close(); 


//Close the Database connection. 
$conn->close(); 

}//End If statement 

が、これは既存のコードのプログラムにユーザーを認証するために使用される元のプログラマです

function verifyAPIlogin($user,$pass){ 
    $thereturn=false; 
    $this->db->stopOnError = false; 

    $querystatement = "SELECT id, firstname, lastname, email, phone, department, employeenumber, admin, usertype 
        FROM users 
        WHERE login!=\"Scheduler\" AND login=\"".mysql_real_escape_string($user)."\" 
        AND password=ENCODE(\"".mysql_real_escape_string($pass)."\",\"".mysql_real_escape_string(ENCRYPTION_SEED)."\") 
        AND revoked=0 AND portalaccess=1"; 
    $queryresult = $this->db->query($querystatement); 
    if(!$queryresult) { 
     $error = new appError(-720,"","Error retrieving user record",true,true,true,"json"); 
     return false; 
    } 

    if($this->db->numRows($queryresult)){ 
     //We found a record that matches in the database 
     // populate the session and go in 
     $_SESSION["userinfo"]=$this->db->fetchArray($queryresult); 

     $querystatement="UPDATE users SET modifieddate=modifieddate, lastlogin=Now() WHERE id = ".$_SESSION["userinfo"]["id"]; 
     [email protected] $this->db->query($querystatement); 
     if(!$queryresult) { 
      $error = new appError(-730,"","Error Updating User Login Time",true,true,true,"json"); 
     } else 
      $thereturn=true; 
    } 
    return $thereturn; 
    } 

}//end loginSession class 

注:$ _POST()の値が正常に入力されたことを既にテストしました。 gを介して私のスクリプトに。

EDIT ::私がやろうとしていることの全体像をより良くするためにコードを追加しました。パスワードの暗号化/ユーザの認証に関わるすべての教訓は非常に高く評価されます。

ありがとうございました!

+0

あなたのパスワードはありませんハッシュ? 1つのテーブルだけが使用されている場合は、カラムにテーブル参照( 'users.')は必要ありません。 – chris85

+0

コードの1/2、それが何であるか、どのような値が含まれているのかわかりません。私はエラーを探し始めることをお勧めします。なぜあなたはどこにいなくてもかっこを使用していますか? –

+0

* "$ _POST()の値が" * "であることを既にテストしましたが、それらの変数は投稿したものと一致しますか? –

答えて

1

私はコメントで述べたように、PHPは今、あなたが見つけるかもしれないパスワードの暗号化と復号化を処理する方法に建てられたカップルはあなたの問題を解決するのに役立ちますがあります。

password_hashpassword_verify

関連する問題