2011-05-07 47 views
0

我有一個用戶表是這樣創造了特定的行1警報,而不是德爾 -從數據庫postgre

   guid    | username |    password    | firstname | lastname | location | emailaddress | userrole 
-----------------------------------+----------+----------------------------------+-----------+-----------+----------+--------------+--------------- 
8024259764dc3e8ee0fb6f5.84107784 | james | 827ccb0eea8a706c4c34a16891f84e7b | james  | bond  | NY  | [email protected] | administrator 
18689183644dc3e91571a364.71859328 | saty  | 250cf8b51c773f3f8dc8b4be867a9a02 | saty  | john  | NY  | [email protected] | administrator 
2644885344cecd6f2973b35.63257615 | admin | 21232f297a57a5a743894a0e4a801fc3 | System | Generated |   |    | administrator 
(3 rows) 

現在我postgre查詢刪除行....

$query = "delete from users where username!= 'admin' and guid='".$guid."'"; 
    $result = pg_query($conn, $query); 

     ?> 
     <script type="text/javascript"> 
       alert("Cannot delete this .\n It is system generated(s)."); 
      </script>  
     <?php 

當有人試圖從我的網頁userlist.php刪除用戶名..此警報產生只爲管理和繼續就此page..and也管理員不要刪除它是默認...... 從數據庫中刪除,否則該數據除了管理 幫我

+0

@Emil u能幫助我嗎? – Harsh 2011-05-07 07:36:07

+0

這不應該用javascript來完成...... JavaScript在客戶端執行,所以你不能依賴它。 – Teneff 2011-05-07 07:42:44

+0

@ Teneff: - 它工作的人,但這個警報顯示爲所有用戶...我想顯示警報只爲管理員,當有人去刪除管理員..我希望管理員永遠不會刪除,而其他用戶名刪除.. – Harsh 2011-05-07 07:46:29

回答

2

爲什麼之前沒有查找爲$guid的用戶名試圖刪除任何東西,SQL的只是一個簡單的有點像這樣:

$query = "select username from users where guid = '" . $guid . "'"; 
# Execute this, pull out the username, and see if it is "admin". 

然後,如果username是「admin」,顯示您的警報;如果username不是「管理員」,請刪除。當你需要一次做一件事情時,你似乎試圖做很多不同的事情,當你需要做兩件不同的事情時,做兩個查詢沒什麼問題。

我希望你的消毒和報價$guid的地方,以防止SQL注入的問題。

0

您可以使用pg_affected_rows查詢多少行被真正刪除。當它爲零時,你確定存在GUID,它必須是因爲GUID屬於管理員用戶。

if (pg_affected_rows($result)) { 
    ?> 
     <script type="text/javascript"> 
       alert("Cannot delete this .\n It is system generated(s)."); 
     </script>  
    <?php 
} 

個人,你必須有一個固定的GUID像0或1的超級用戶,所以你不必測試和依靠的名字,我會選擇一個設計。當用戶使用名稱admin或由於某處的錯誤而成功將其名稱更改爲admin時會發生什麼情況?