我的代碼實際上正在工作,但它一點都不安全,我不想使用MD5,因爲它不是那麼安全。我一直在查找密碼哈希,但我不知道如何將它合併到我的代碼中。如何使用密碼散列與PDO使我的代碼更安全?
登錄:
require_once __DIR__.'/config.php';
session_start();
$dbh = new PDO('mysql:host=' . DB_HOST . ';dbname=' . DB_USERNAME, DB_USERNAME, DB_PASSWORD);
$sql = "SELECT * FROM users WHERE username = :u AND password = :p";
$query = $dbh->prepare($sql); // prepare
$params = array(":u" => $_POST['username'], ":p" => $_POST['password']);
$query->execute($params); // execute
$results = $query->fetchAll(); // then fetch
//hash passwords pls
if (count($results) > 0){
$firstrow = $results[0];
$_SESSION['username'] = $firstrow['username'];
echo "Hello $username you have successfully logged in";
//header ("location:.php");
}
else{
echo "Login Has Failed";
return;
}
註冊:
$dbh = new PDO('mysql:host=' . DB_HOST . ';dbname=' . DB_USERNAME, DB_USERNAME, DB_PASSWORD);
$username = $_POST["username"];
$email = $_POST["email"];
$password = $_POST["password"];
$stmt = $dbh->prepare("insert into users set username='".$username."', email='".$email."', password='".$password."' ");
$stmt->execute();
echo "<p>Thank you, you are registered</p>";
誰能告訴我如何將其納入我的代碼?
是否[PHPass(http://www.openwall.com/phpass/)滿足您的需求? 關於合併,您在身份驗證時檢查哈希,並在創建帳戶時應用所需的哈希。 –
旁註:你的註冊部分是不安全的。現在,我敢打賭,我可以在5分鐘內找到50條與此相關的鏈接。但那是你的工作。告訴我們你的嘗試。 –
查看['password_hash()'](http://php.net/password_hash)。它內置於更新版本的PHP中。 – ircmaxell