【发布时间】:2015-07-27 23:08:01
【问题描述】:
所以我允许用户使用用户名和密码创建帐户。当用户使用以下方法创建新帐户时,我已设法加密密码:
$hash = password_hash($password, PASSWORD_BCRYPT);
但是我在登录时遇到了密码验证问题,有人可以帮我解决我的问题吗?我知道是这样的:
password_verify($password, $hash)
但我不知道如何构造它或在代码中的何处添加它。提前致谢。这就是我所拥有的:
<?php
if (isset($_GET["username"]) && isset($_GET["password"]) ){
$username = $_GET["username"];
$password = $_GET["password"];
$result = login( $username, $password);
echo $result;
}
function makeSqlConnection()
{
$DB_HostName = "";
$DB_Name = "";
$DB_User = "";
$DB_Pass = "";
$con = mysql_connect($DB_HostName,$DB_User,$DB_Pass) or die(mysql_error());
mysql_select_db($DB_Name,$con) or die(mysql_error());
return $con;
}
function disconnectSqlConnection($con)
{
mysql_close($con);
}
function login($username, $password)
{
$con = makeSqlConnection();
$sql = "select * from login where username = '$username' and password = '$password';";
$res = mysql_query($sql,$con) or die(mysql_error());
$res1 = mysql_num_rows($res);
disconnectSqlConnection($con);
if ($res1 != 0) {
return 1;
}else{
return 0;
}// end else
}// end of Function
?>
【问题讨论】:
-
在登录功能中,选择时只选择用户名。从选择结果中获取密码并使用
password_verify。 -
尝试使用
PDO或mysqli作为数据库,因为不再支持`mysql`。 -
老实说不知道你为什么使用 mysql_ 和 PHP 5.5 密码散列方法。
-
如果你使用
password_hash和password_verify这意味着你的PHP版本> 5.5。为什么要使用 mysql 扩展? -
谢谢@frz3993 成功了!
标签: php mysql password-hash