2016-03-05 215 views
-1

我編寫腳本通過輸入更改管理員密碼 但問題是當我編寫新密碼時。 它的所有表中改變的意思,新的密碼成爲所有用戶的新密碼,我想這只是我選擇 請你能不能幫我 這是腳本的用戶:腳本更改管理員密碼

    <form method="post"> 
        <div style="padding-left:40px;" class="azer" class="adm"> 
        <ul style="list-style : none; " > 
         <li style="padding-left:5px;"> 
          <h6 style="float:left; ">new password :</h6>       
          <input style="float:left; margin-left:10px; " type="text" name="zd_pass" placeholder="*******"> 
         </li> 
         <li><input style="margin-left:10px;" type="submit" name="save" value="save" class="btn btn-info" ></li> 
        </ul> 
       </div> 
      </form> 
      <?php    
if(isset($_GET['id'])){ 
    $id = (int)$_GET['id']; 
    $get_id = "select * from admin where zd_id='$id'"; 
    $run_id = mysqli_query($db,$get_id); 
    if(mysqli_num_rows($run_id) > 0){ 
     if(isset($_POST['save'])){  
       $zd_id = @$_POST['zd_id']; 
       $zd_pass = @$_POST['zd_pass']; 
      $update = "update admin set zd_pass='$zd_pass'"; 
      $run_update = mysqli_query($db,$update); 
    if(isset($run_update)){ 
    }} }} ?> 
+0

您的更新queqy沒有'where'條件,這就是爲什麼它更新了一整套 – Farside

+0

我很好奇。這個網站是活的還是打算上線?我希望你已經考慮使用安全的哈希函數來存儲密碼。 –

回答

2

您需要將更新限制爲單個行,與您之前的選擇一樣。你可以通過像這樣設置一個WHERE子句來實現,否則它會更新整個數據庫。

在將更新提交到數據庫執行後,您的測試也不可靠。你應該改變它,如下

$update = "update admin set zd_pass='$zd_pass' WHERE zd_id='$id'"; 

$run_update = mysqli_query($db,$update); 
if($run_update !== FALSE) { 
    // the update worked 
} else { 
    // the update failed 
} 
+0

...這樣,否則它會更新你的整個數據庫。我的編輯是Smokey。 –

+0

哦嗨Ralph @ Fred-ii- – RiggsFolly

+0

* Gidday Smokey * –