2015-06-07 48 views
1

幫助用戶刪除:PHP登錄系統幫助需要刪除

你好我創建一個用戶創建系統爲我的項目,我仍然很新的PHP,我的問題是從MySQL獲得用戶數據庫中,然後刪除它,我會告訴你我下面的代碼:

  <?php 
      require_once("config/db.php"); 

      if ($login->isUserLoggedIn() == true) { 
       if ($_SESSION['user_perm'] == 1) { 

        //Create Connection 
        $db_connection = new mysqli(DB_HOST, DB_USER, DB_PASS, DB_NAME); 
        // Check connection 
        if ($db_connection->connect_error) { 
         die("Connection failed: " . $db_connection->connect_error); 
        } 

        $sql = "SELECT user_name FROM users"; 
        $result = $db_connection->query($sql); 

        if ($result->num_rows > 0) { 
         // output data of each row 
         while($row = $result->fetch_assoc()) { 
          echo $row["user_name"]; 
          $user_name_delete = $row["user_name"]; 
          $_SESSION['user_name_delete'] = $user_name_delete; 
           echo '<a href="deleteuser.php">Delete User</a><br>'; 
          } 

         } 
        } 
        $db_connection->close(); ?> 

在deleteuser.php頁我的代碼,請注意,這只是一個測試:

<?php 
    echo $_SESSION['user_name_delete']; 
?> 

我對這個問題抓您選擇刪除的用戶目前只輸出從數據庫中抓取的最後一個用戶。

任何幫助,非常感謝。

+1

https://dev.mysql.com/doc/refman/5.0/en/delete.html – David

+0

@David嗨大衛,我知道如何從數據庫中刪除數據,我遇到的問題是檢測用戶我想要刪除,因爲目前只有最後一個用戶將被刪除,而不管您選擇刪除哪個用戶。 – bobbyjane

回答

1

此值:

$_SESSION['user_name_delete'] 

會爲只包含數據的最後一個用戶。因爲您一直覆蓋它在你的循環中:

$_SESSION['user_name_delete'] = $user_name_delete; 

簡短的回答是...不要使用會話狀態。 (實際上,除非您絕對必須,否則不應使用會話狀態。)要刪除的用戶的身份應包含在刪除用戶的請求中。在這種情況下,您可以將其添加到鏈接。事情是這樣的:

echo '<a href="deleteuser.php?id=' . $row['user_id'] . '">Delete User</a><br>'; 

(或任何你用它來識別用戶的數據行)在deleteuser.php

然後你可以從該值:

$_GET['id'] 

驗證輸入,驗證用戶是否有權執行刪除操作,然後在DELETE查詢的WHERE子句中使用該值。

+0

@bobbyjane:它看起來像有人不同意,因爲這個答案有一個投票:)但我很高興我可以幫助! – David

-1

獲取用戶ID並將其插入到刪除查詢中。 $id = $db->real_escape_string($_GET['id']); $sql = "delete from users where id = " . $id;然後運行查詢從數據庫中刪除用戶。

+0

請不要推薦SQL注入漏洞。世界上已經有足夠的人了。 – David

+0

@大衛,我修好了。現在好嗎?刪除downvote –