當試圖獲得密碼,以確認它是正確的,我得到錯誤:檢查密碼是否正確無法正常工作。 SQL語句錯誤
[10-May-2017 01:52:44 UTC] PHP Warning: password_verify() expects parameter 2 to be string, object given in /home/affattraction/login.affattraction.com/admin/login_process.php on line 22
代碼是:
<?php
/*
*
* Copyright 2017 by Jarrod Estepp
* This script is private software and is illegal to
* use without consent from Jarrod Estepp - [email protected]
*
* login_process.php
*/
session_start();
include('../includes/settings.php');
include('../includes/mysql.php');
//Grab Login Details
$email = $_POST['email'];
$password = $_POST['password'];
//Grab Stored Password
$password = $password;
$password_stored = $conn->query("SELECT password FROM admins WHERE email = '$email'");
if(password_verify($password, $password_stored)) {
echo "Correct";
} else {
echo "Your not logged";
}
?>
爲什麼會出現這種錯誤。我無法找到任何解決辦法!
** WARNING **:這有一些嚴重的[SQL注入錯誤](http://bobby-tables.com/),因爲'$ _GET'數據在查詢內使用。儘可能使用**準備好的陳述**。這些在['mysqli'](http://php.net/manual/en/mysqli.quickstart.prepared-statements.php)和[PDO](http://php.net/manual/)中很簡單en/pdo.prepared-statements.php)其中任何用戶提供的數據都是用'?'或':name'指示符指定的,後者使用'bind_param'或'execute'填充,具體取決於您使用的是哪一個。 **絕不**將'$ _POST','$ _GET'或任何用戶數據直接放入您的查詢中。 – tadman
**警告**:編寫您自己的訪問控制層並不容易,並且有很多機會使其嚴重錯誤。這有很多危險的[SQL注入漏洞](http://bobby-tables.com/),因爲你沒有[妥善轉義值](http://bobby-tables.com/php)。此代碼允許*任何人*從您的網站獲得*任何*。 **不要**寫你自己的認證系統。任何[開發框架](http://codegeekz.com/best-php-frameworks-for-developers/)像[Laravel](http://laravel.com/)都帶有一個[認證系統](https:/ /laravel.com/docs/5.4/authentication)內置。 – tadman
版權警告和免責聲明有點多,特別是對於Stack Overflow問題。 – tadman