我试图为用户创建一个表单来更改密码
<div class="panel panel-primary">
<div class="panel-heading">
<h3 class="panel-title"><?php echo $errormessage;?></h3>
</div>
<div class="panel-body">
<form method="post" name="passwordchange" id="passwordchange">
<div class="row">
<div class="col-md-6">
<div class="row">
<div class="col-md-3"><label>Password</label></div>
<div class="col-md-5"><input class="form-control" name="pass1" id="pass1" type="text" required value=""></div>
</div>
</div>
<div class="col-md-6">
<div class="row">
<div class="col-md-3"><label>Confirm Password</label></div>
<div class="col-md-5"><input class="form-control" name="pass2" id="pass2" type="text" required value=""></div>
</div>
</div>
<input type="submit" class="btn btn-primary pull-right" name="submit" value="submit">
</div>
</form>
</div>
</div>
<?php
$ok=true;
if(isset($_POST['submit']))
{
$new_password = $_POST['pass1'];
$new_password2 = $_POST['pass2'];
$userid=$_SESSION['user']['id'];
if($new_password!=$new_password2){
$ok=false;
$errormessage="Passwords do not match.";
}
if($ok){
$errormessage="ok";
$salt = dechex(mt_rand(0, 2147483647)) . dechex(mt_rand(0, 2147483647));
$password = hash('sha256', $new_password . $salt);
for($round = 0; $round < 65536; $round++)
{
$password = hash('sha256', $password . $salt);
}
$query = "
update users
set
password = :password,
hash = :hash
WHERE id = '$userid'";
// The parameter values
$query_params = array(
':password' => $password,
':salt' => $salt
);
try
{
// Execute the query against the database
$stmt = $db->prepare($query);
$result = $stmt->execute($query_params);
}
catch(PDOException $ex)
{
//die("Failed to run query: " . $ex->getMessage());
die("update error");
}
header("Location: account.php?success");
}
}
?>
当我提交表单时,页面重新加载并且没有任何反应。当我输入两个不同的密码时,我收到错误消息&#39;密码不匹配。&#39;
当表单重新加载时,我也会得到一个奇怪的行为,我的网站上的导航在表单重新加载后停止工作。
我尝试使用输入类型名称,表单名称,使用isset _request而不是isset _POST。但似乎没有任何帮助。
我做错了什么?
编辑:我混淆了SALT和HASH。 Wooops ..
答案 0 :(得分:1)
在查询中,您有哈希和密码,在准备SALT和密码中。您的查询中没有盐。
答案 1 :(得分:-1)
基本上,在你的if条件等于真如果条件不会进入内部。
试试这个
if($ ok =='true'){
}