2017-10-08 81 views
1

我正在研究一個簡單的腳本,它允許用戶在數據庫中創建帳戶並更改密碼。我遇到的唯一問題是創建一個允許用戶更改密碼的腳本。它不會在我的數據庫中更新。我正在成功發送消息,但不會在數據庫中更新。請幫助我的任何建議將不勝感激請讓我知道是否需要更多的細節?登錄名和密碼更改PHP和MYsql

  <form method="POST"> 
       old:<input type="text" name="old_pass"> 
       new:<input type="text" name=""> 
       conf:<input type="text" name=""> 
       <input type="submit" name="submit" value="save"> 
      </form> 
      <?php 

      $conn_db = mysqli_connect("localhost","root","","oz"); 
      if(!$conn_db) 
      { 
       echo "not connect"; 
      } 
       echo "connect".mysqli_error($conn_db); 

       SESSION_START(); 
      if($_SERVER['REQUEST_METHOD']=="POST") 
      { 
      if(isset($_POST['submit'])) 
       { 

       $old_pass=$_POST['old_pass']; 
       $new_pass=$_POST['new_pass']; 
       $re_pass=$_POST['re_pass']; 
       $chg_pwd=mysqli_query($conn_db,"SELECT * FROM admin WHERE email='$email'"); 
       $chg_pwd1=mysqli_fetch_array($chg_pwd); 
       $data_pwd=$chg_pwd1['pass']; 
       if($data_pwd==$old_pass){ 
       if($new_pass==$re_pass){ 
        $update_pwd=mysqli_query($conn_db,"UPDATE admin SET pass='$new_pass' where email='$email'"); 

        echo "<script>alert('Update Sucessfully'); window.location='index.php'</script>"; 
       } 
       else{ 
        echo "<script>alert(`Your new and Retype Password is not match`); window.location='index.php'</script>"; 
       } 
       } 
       else 
       { 
       echo "<script>alert(`Your old password is wrong`); window.location='change.php'</script>"; 
       }} 
      } 
       ?> 
+3

請求停止存儲純文本密碼 – rtfm

+3

**請勿使用純文本密碼**請使用** [PHP的內置函數]( http://php.net/manual/en/function.password-hash.php)**來處理密碼安全性。如果您使用的PHP版本低於5.5,則可以使用password_hash()** [兼容包](https://github.com/ircmaxell/password_compat)**。確保你** [不要越過密碼](http://stackoverflow.com/q/36628418/1011527)**或在哈希之前使用其他任何清理機制。這樣做會更改密碼並導致不必要的附加編碼。 –

+1

除了你的代碼受到SQL注入攻擊之外,你還是希望使用參數化語句或至少逃避你的輸入。 –

回答

0
  1. 你所得到的成功的消息,因爲你沒有實際檢查更新是否成功。你只是檢查密碼是否匹配:if($new_pass==$re_pass)

  2. 你從來沒有定義$email,所以你的WHERE子句產生一個空的數據集。

嘗試定義$email,例如:$email = $_POST['email']和移動提醒和重定向檢查查詢

if(mysqli_query($conn_db,"UPDATE admin SET pass='$new_pass' where email='$email'")) { 
    echo "<script>alert('Update Sucessfully'); window.location='index.php'</script>"; 
} 

注意的結果if語句的內部:

  1. 您不應該以純文本格式存儲您的密碼。
  2. 在查詢中運行它之前,您應該安全地轉換所有輸入以防止SQL注入。
0

試用以下

if($new_pass==$re_pass){ 
    $update_pwd = $conn_db->query("UPDATE admin SET pass='$new_pass' WHERE email='$email'"); 
    if($update_pwd){ echo "<script>alert('Update Sucessfully'); window.location='index.php'</script>"; 
} else { //echo server error } 

       } 
0

你的 'mysqli_query' 更改爲 '$ conn_db->查詢'。將不需要在括號中包含'$ conn_db'。 同時,如果您的php設置中設置了錯誤日誌,您可以看到錯誤