2016-03-05 171 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 * –