У меня есть регистрационная форма, в которой входные данные записываются в базу данных. Пароль «pw» будет хэширован с помощью BCRYPT, это правильно работает с этим кодом:Password Hashing
$ pwHash = pw_hash ($ pw, PASSWORD_BCRYPT, array ('cost' => 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");
?>
Подтяжки ('{...}') вокруг блоков кода (для блока 'if'?); выглядит как ошибка в вашей логике –
'$ pwHash' - это не массив, это строка; но ваш блок запросов пытается ссылаться на него так, как будто это массив ... поскольку '$ pwHash' - это строка,' $ pwHash [0] 'будет ссылаться на первый символ' $ pwHash'; '$ pwHash [1]' будет ссылаться на второй символ и т. д. –
Почему ваши '$ _POST ['id']', '$ fn = $ _POST ['fn'];', '$ em = $ _POST [' em ']; 'и т. д. все равно рассматриваются как массивы? –