На моей странице администратора у меня есть форма, где я могу редактировать страницу пользователя. Когда я загружаю страницу редактирования и форму, я также загружаю информацию из базы данных, потому что, если поля пусты, они будут пустыми и в базе данных после отправки формы.Обновить поля в базе данных
Проблема с полем пароля. Когда форма загружается, поле для пароля - password
и отображается следующим образом: ••••••••••••••••••••••••••••••••••••••••
, который является закодированным паролем из DB 4d9012b4a77a9524d675dad27c3276ab5705e5e8
. Если я не изменить пароль и не входной же пароль в поле обновляется в базе данных и стать этим 8122c907fcf084364519b613b3ba6a3a88c9f980
.. Это файл для редактирования
// keep track post values
$username= $_POST['username'];
$password = sha1($_POST['password']);
$email = $_POST['email'];
$fileName = $_FILES['user_image']['name'];
$tmpName = $_FILES['user_image']['tmp_name'];
$fileSize = $_FILES['user_image']['size'];
$fileType = $_FILES['user_image']['type'];
// make a new image name
$ext = substr(strrchr($fileName, "."), 1);
// generate the random file name
$randName = date('Y-m-d') . '-' .$fileName;
// save image path
$path = "../../img/".$randName;
if (in_array($fileType, $permitted))
{
$result = move_uploaded_file($tmpName, $path);
if (!$result)
{
echo "Error uploading image file";
exit;
}
}
// update data
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
if ($fileName != null && $fileName != '')
{
$sql = "UPDATE users set username = ?, password = ?, email = ?, user_image = ? WHERE user_id = ?";
$q = $pdo->prepare($sql);
$q->execute(array($username,$password,$email,$path,$user_id));
}
else
{
$sql = "UPDATE users set username = ?, password = ?, email = ? WHERE user_id = ?";
$q = $pdo->prepare($sql);
$q->execute(array($username,$password,$email,$user_id));
}
if (isset($_POST)) {
$_SESSION['edited'] = '<center><code>Done!</code></center>';
} else {
$_SESSION['edited'] = false;
}
header('Location: users.php');
}
else
{
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$sql = "SELECT * FROM users where user_id = ?";
$q = $pdo->prepare($sql);
$q->execute(array($user_id));
$data = $q->fetch(PDO::FETCH_ASSOC);
$username = $data['username'];
$password= sha1($data['password']);
$email = $data['email'];
$user_image = $data['user_image'];
Database::disconnect();
}
?>
<form role="form" action="" method="post" enctype="multipart/form-data">
<div class="form-group">
User ID: <b><?php echo $user_id;?></b>
</div>
<!-- Text input-->
<div class="form-group">
<label for="username">Username</label>
<input value="<?php echo !empty($username)?$username:'';?>" id="username" name="username" class="form-control" type="text">
</div>
<!-- File Button -->
<div class="form-group">
<label for="user_image">image</label>
<input id="userl_mage" name="user_image" class="input-file" type="file" value="<?php echo !empty($user_image)?$user_image:'';?>">
</div>
<!-- File Button -->
<div class="form-group">
<label for="password">Password</label>
<input id="password" name="password" class="form-control" type="password" value="<?php echo !empty($password)?$password:'';?>">
</div>
<!-- Text input-->
<div class="form-group">
<label for="email">Email</label>
<input id="email" name="email" class="form-control" type="text" value="<?php echo !empty($email)?$email:'';?>">
</div>
То, что я вижу, как это возможно исправить, чтобы показать фактический пароль поэтому, когда форма отправлена, а пароль не изменился на хэш-пароль такого же пароля. Но я не хочу видеть пароль.
Любые идеи, как это сделать?
Пусть поле пароля пуст. Сохраненные пароли должны быть хэшированы при любых обстоятельствах. Конечно, вам нужно проверить, установлено ли поле пароля при обновлении и соответствует ли оно вашим стандартам пароля для приложений. –
В дополнение к вопросам, связанным с паролем, я могу порекомендовать эту статью. В учебнике объясняется, как использовать шифрование blowfish для безопасного хранения ваших паролей. http://code.tutsplus.com/tutorials/understanding-hash-functions-and-keeping-passwords-safe--net-17577 – Ben
Да, Бен, я понимаю это, но я объяснил в @Arcturil ответ, почему я не хочу и в этой системе требуется «более совершенное» шифрование. Спасибо за учебник. –