Php 登录不使用blowfish哈希

Php 登录不使用blowfish哈希,php,login,blowfish,Php,Login,Blowfish,这是使用的代码 function sanitizeMySQL($conn, $var) { $var = $conn->real_escape_string($var); $var = sanitizeString($var);return $var; } function sanitizeString($var) { $var = (null !== (get_magic_quotes_gpc()))?stripslashes($var):null;

这是使用的代码

function sanitizeMySQL($conn, $var)
{
    $var = $conn->real_escape_string($var); 
    $var = sanitizeString($var);return $var;
}


function sanitizeString($var)
{
    $var = (null !== (get_magic_quotes_gpc()))?stripslashes($var):null;
    $var = strip_tags($var);
    $var = htmlentities($var);
    return $var;
}

试试这个

<?php

$email = trim($_POST['login_email']);
$pwd= trim($_POST['login_pwd']);

//sanitize datas
$email = sanitizeMySQL($conn, $email);
$pwd = sanitizeMySQL($conn, $pwd);

$sql1 = mysqli_query($conn, "SELECT * FROM login_tbl WHERE email = '$email' limit 1");
$row1 = mysqli_fetch_array($sql1);
$dbpwd = $row1['password'];

if(crypt($pwd,$dbpwd) == $dbpwd){
    //ok
    $msg = "Welcome Customer";
}else{
    //error
    $msg = "Invalid Email / Password.";
}
echo $msg."<br>".$pwd."<br>".crypt($pwd,$dbpwd)."<br>".$dbpwd;
$email=$\u POST['login\u email'];
$pwd=$_POST['login_pwd'];
$sql1=mysqli_query($conn,“从登录名中选择*,其中email='$email'限制1”);
$row1=mysqli\u fetch\u数组($sql1);
$dbpwd=$row1['password'];
if(crypt($pwd,$dbpwd)==$dbpwd){
//嗯
$msg=“欢迎客户”;
}否则{
//错误
$msg=“无效的电子邮件/密码。”;
}
echo$msg.“
”.crypt($pwd,$dbpwd)。“
”$dbpwd;
这终于奏效了

$email = $_POST['login_email'];
$pwd= $_POST['login_pwd'];


$sql1 = mysqli_query($conn, "SELECT * FROM login_tbl WHERE email = '$email' limit 1");
$row1 = mysqli_fetch_array($sql1);
$dbpwd = $row1['password'];

if(crypt($pwd,$dbpwd) == $dbpwd){
    //ok
    $msg = "Welcome Customer"; 
}else{
    //error
    $msg = "Invalid Email / Password.";
}
echo $msg."<br>".crypt($pwd,$dbpwd)."<br>".$dbpwd;


为什么不使用PHP的password\u hash()和password\u verify()?警告:您的代码易受SQL注入攻击:您不能在查询中使用原始用户输入。寻找准备好的语句。感谢您回复
crypt()。您正在使用数据库中的加密密码作为运行
crypt()
的SALT。这样,您将永远无法获得匹配的输出。使用
password\u hash()
password\u verify()
它们使用相同的加密,但会自动确保强加密。看起来您在这段代码中使用了
password\u verify()
逻辑,可能还会添加一些解释以及您所更改的内容?这看起来像是一个复制品&帕斯蒂不认为在没有任何解释的情况下给出一个“解决方案”是很好的,特别是当代码对sql注入很弱时……检查if,else语句。希望这不是一个需要太多解释的冗长代码。现在对你有用吗?基本逻辑不正确。
crypt()
的使用完全是一团糟$msg=“Welcome Customer;info=”$味精);此行包含“info=”$味精);“这可能是你从其他地方复制的,而不是故意在这里使用
<?php
require_once("functions.php");
require_once ("db_connection.php");

$var = "@Me12345";
sanitizeMySQL($conn, $var);

$options = [
    'cost' => 10,
    'salt' => mcrypt_create_iv(22, MCRYPT_DEV_URANDOM),
];

$hash = password_hash($var, PASSWORD_BCRYPT, $options);
echo $var ." ". $hash;
var_dump(password_verify($var, $hash));
?>