【发布时间】:2015-06-28 22:29:56
【问题描述】:
我的代码实际上可以运行,但它一点也不安全,我不想使用 MD5,因为它不是那么安全。我一直在查找密码哈希,但我不确定如何将其合并到我的代码中。
登录:
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 是否满足您的需求?关于合并,您在身份验证时检查两个哈希,并在创建帐户时应用您想要的哈希。
-
旁注:您的注册部分不安全。现在,我敢打赌,我可以在 5 分钟内为您找到 50 个与此相关的链接。但那是你的工作。向我们展示您的尝试。
-
查看
password_hash()。它内置于较新版本的 PHP 中。 -
@ircmaxell 我们不要忘记你的
password_hash() compatibility pack以防万一;-)
标签: php mysql security pdo password-hash