сохранить результат MySQL SELECT в переменной php с использованием подготовленных операторов

Я пытаюсь подготовить пользовательские операторы, чтобы найти запись пользователя и сохранить идентификатор пользователя в переменной php для последующего использования. Я хотел бы повторить содержимое переменной. Как я могу проверить результат, используя Подготовленные заявления?

Мой код:

 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

Более того, это уже существующий код, который оригинальный программист использовал для аутентификации пользователей в программе:

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

И проверяющая функция:

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"];
$queryresult=@ $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 () успешно проходят через мой скрипт.

РЕДАКТИРОВАТЬ :: добавил больше кода, чтобы дать лучшую общую картину того, что я пытаюсь сделать. Будем весьма благодарны за любые общие записи о шифровании паролей / аутентификации пользователей.

Спасибо!

0

Решение

Как я уже упоминал в комментарии, в PHP теперь есть пара встроенных методов для обработки шифрования и дешифрования паролей, которые могут помочь решить вашу проблему:

password_hash а также
password_verify

1

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector