我有一个登记表,其中输入的数据被写入数据库。密码'pw‘将使用BCRYPT进行散列,此密码与以下代码正确工作:
$pwHash = pw_hash($pw,PASSWORD_BCRYPT,array(‘成本’=> 10));
问题:
当我想更新数据时,它将无法工作。下面的代码不加密地将数据写入数据库。
如何使密码加密?
有人能帮我吗?
<?php
include_once 'dbcon.php';
$id = $_POST['id'];
$fn = $_POST['fn'];
$ln = $_POST['ln'];
$em = $_POST['em'];
$hid = $_POST['hid'];
$tn = $_POST['tn'];
$us = $_POST['us'];
$pw = $_POST['pw'];
$ul = $_POST['ul'];
$chk = $_POST['chk'];
$chkcount = count($id);
for($i=0; $i<$chkcount; $i++)
$pwHash = pw_hash($pw, PASSWORD_BCRYPT, array('cost' => 10));
{
$MySQLiconn->query("UPDATE user SET FName='$fn[$i]', LName='$ln[$i]', Email='$em[$i]', HerbalifeID='$hid[$i]', TelNr='$tn[$i]', UplineS='$us[$i]', Password='$pwHash[$i]', UserLevel='$ul[$i]' WHERE UserID=".$id[$i]);
}
header("Location: indexAdmin.php");
?>
发布于 2016-05-06 07:22:14
我想修复应该是以下几点
<?php
include_once 'dbcon.php';
$id = $_POST['id'];
$fn = $_POST['fn'];
$ln = $_POST['ln'];
$em = $_POST['em'];
$hid = $_POST['hid'];
$tn = $_POST['tn'];
$us = $_POST['us'];
$pw = $_POST['pw'];
$ul = $_POST['ul'];
$chk = $_POST['chk'];
$chkcount = count($id);
for ($i = 0; $i < $chkcount; $i++) {
$pwHash = password_hash($pw[$i], PASSWORD_BCRYPT, array('cost' => 10));
$MySQLiconn->query("UPDATE user SET FName='$fn[$i]', LName='$ln[$i]', Email='$em[$i]', HerbalifeID='$hid[$i]', TelNr='$tn[$i]', UplineS='$us[$i]', Password='$pwHash', UserLevel='$ul[$i]' WHERE UserID=".$id[$i]);
}
header("Location: indexAdmin.php");这些变化是
pwHash变量和更新表。$pw[$i]作为其他变量,如$id和$fn --它们似乎都是数组。$pwHash不是数组,而是像标量变量一样访问它。password_hash函数-基于保罗·克罗夫拉注释的更新与代码相关的问题有几个。我认为最重要的一点是,代码是向SQL注入攻击开放的。
https://stackoverflow.com/questions/37066462
复制相似问题