簡體   English   中英

運行密碼更改腳本時出現錯誤

[英]Getting an error while running password change script

我有一種更改用戶密碼的表格。 它在個人資料頁面上接受輸入,然后發送到另一個頁面進行處理。 但是,即使我離開任何字段blnk,我也會收到錯誤login_failed。 在空白情況下,錯誤應為“填充所有字段”。 有人可以告訴問題出在哪里。

<form method="post" action="updatepassword.php">
           <input name="pass" type="text" placeholder="Old password" /> 
           <input name="pass1" type="text" placeholder="New password" /> 
           <input name="pass2" type="text" placeholder="Confirm password" />
                      <input id="butt" type="submit" value="Update" name="pinchange"> 
                      </form>

updatepassword.php

<?php
include_once("login_status.php");

}

if(isset($_POST['pinchange']))
{
 $pass=md5($_POST['pass']);
 $pass1=md5($_POST['pass1']);
 $pass2=md5($_POST['pass2']);
 if($pass==""||$pass1==""||$pass2==""){ echo "Fill all the fields"; exit();}
 else{
 $sql = "SELECT id,password FROM users WHERE username='$log_username' ;
        $query = mysqli_query($db_conx, $sql);
        $row = mysqli_fetch_row($query);
        $db_id = $row[0];
        $db_pass_str = $row[1];
        if($pass != $db_pass_str){      
            echo "login_failed";
            exit();
        }
}

}
?>

重要說明:使用MD5存儲和檢索密碼被認為是非常不好的做法。 這個答案只是說明代碼有什么問題。 它根本不鼓勵使用MD5哈希。

將密碼與空字符串進行比較后,才應使用md5轉換密碼。 因此,您應該執行以下操作:

<?php
include_once("login_status.php");

if(isset($_POST['pinchange']))
{
 $pass=$_POST['pass'];
 $pass1=$_POST['pass1'];
 $pass2=$_POST['pass2'];
 if($pass==""||$pass1==""||$pass2==""){ echo "Fill all the fields"; exit();}
 else{
     $sql = "SELECT id,password FROM users WHERE username='$log_username'" ;
     $query = mysqli_query($db_conx, $sql);
     $row = mysqli_fetch_row($query);
     $db_id = $row[0];
     $db_pass_str = $row[1];
     if(md5($pass) != $db_pass_str){      
         echo "login_failed";
         exit();
     }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM