我有一个注册表单,其中输入数据被写入数据库。密码' pw'将使用BCRYPT进行哈希处理,这可以正常使用此代码:
$ pwHash = pw_hash($ pw,PASSWORD_BCRYPT,数组('费用' => 10));
问题:
当我想更新数据时,它将无法正常工作。 下面的代码将没有加密的数据写入数据库。
如何加密密码?
有人可以帮助我吗?
procedure TForm1.SelectChildren(ANode: TTreeNode);
begin
ANode := ANode.GetFirstChild;
if ANode = nil then Exit;
repeat
TreeView1.Select(ANode, [ssCtrl]);
SelectChildren(ANode);
ANode := ANode.getNextSibling;
until ANode = nil;
end;
procedure TForm1.Button5Click(Sender: TObject);
var
Node: TTreeNode;
begin
if (TreeView1.Selected <> nil) and
(TreeView1.Selected.Level <> 0) then Exit;
Node := TreeView1.Selected;
SelectChildren(Node);
end;
&#13;
答案 0 :(得分:0)
我想修复应该是以下
<?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
功能 - 根据Paul Crovella 有几个与代码相关的问题。我认为主要的是代码打开SQL injection attack。