Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/275.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP更新密码表单不工作_Php_Forms_Post_Pdo - Fatal编程技术网

PHP更新密码表单不工作

PHP更新密码表单不工作,php,forms,post,pdo,Php,Forms,Post,Pdo,我正在尝试制作一个表单,供用户更改密码。 密码 确认密码 在查询中,您有哈希和密码,在prepare SALT和password中。查询中没有盐。基本上,在if条件中等于true,而不是在if条件中 试试这个 如果($ok=='true'){ }错误报告和显示错误?您真的不应该在密码哈希上使用自己的salt,而应该使用PHP来处理密码安全性。在散列之前,请确保对它们进行了清理或使用了任何其他清理机制。这样做会更改密码并导致不必要的额外编码。是否检查了错误日志?您没有输出任何有价值的错误消

我正在尝试制作一个表单,供用户更改密码。


密码
确认密码


在查询中,您有哈希和密码,在prepare SALT和password中。查询中没有盐。

基本上,在if条件中等于true,而不是在if条件中

试试这个

如果($ok=='true'){


}

错误报告和显示错误?您真的不应该在密码哈希上使用自己的salt,而应该使用PHP来处理密码安全性。在散列之前,请确保对它们进行了清理或使用了任何其他清理机制。这样做会更改密码并导致不必要的额外编码。是否检查了错误日志?您没有输出任何有价值的错误消息。我正在尝试打开错误日志。什么会导致奇怪的导航/刷新错误?@Enrico很可能是因为下面的答案而命中了
die()
,从而导致站点的HTML或Javascript不完整。查看HTML源代码,而不是浏览器呈现。如果您没有捕获该异常,并且没有对其执行任何操作,那么PHP将显示该异常,让您知道发生了什么错误。在开发过程中抑制错误或异常是一种不好的做法。虽然
true==“true”
在PHP中由于比较松散而起作用,但这对上面的代码没有影响,将布尔值与字符串进行比较是一种不好的做法。天哪。。你是对的。我把盐和土豆条混在一起了。我甚至没有注意到:/
              <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");

}

}

?>