【发布时间】:2016-02-01 15:55:23
【问题描述】:
我一直在使用 md5 作为密码。例如$password=md5($_POST['password']);;
我听说 md5 只是部分安全。现在我想使用password_hash函数$password=password_hash($_POST['password'],PASSWORD_DEFAULT);
这是我的代码:
if($submit)
{
$first=$_POST['first'];
$password=password_hash($_POST['password'],PASSWORD_DEFAULT);
$db = new mysqli("localhost", "root","","learndb");
$sql = "select * from admin where username = '" . $first . "' and password = '". $password . "'";
$result = $db->query($sql);
$result=mysqli_num_rows($result);
if($result>0)
{
session_start();
$_SESSION['logged_in'] = true;
session_regenerate_id(true);
header("Location:loginhome.php");
}
}
现在我应该如何将我的密码存储在数据库中。以前在使用 md5 时,函数字段中有一个 md5。现在呢?
【问题讨论】:
-
我认为 varchar(255) 是一个很好的解决方案
-
1.阅读手册。 2. 使用准备好的语句。 3.验证密码,见第1点(提示:
password_verify()函数) -
有一个很好的演练here。数据库中的字段应该是
TEXT类型,以允许可以添加到password_hash()的不同算法。就目前而言,散列的长度为 60 个字符并且会变得更长。