2012-07-17 61 views
0

我想創建一個用戶塊我有按鈕阻止用戶從檔案

<a type="button" value="1" name="block" Cursor="pointer" href="blockuser.php?uid='. $data['id'].'">Block</a> 

但我想知道如何以最佳PHP,Ajax來做到這一點,無論是用戶表或一個單獨的blockuser表。所以,當我點擊block時,我可以用值id將數值1發送到數據庫,並阻止他們使用交換機查看整個配置文件,反之亦然。

然後,我會繼續創建一個阻止列表,以便能夠在任何給定時間解鎖該用戶,如果用戶願意的話。

隱私是必須的!感謝您給予的任何幫助。

回答

0

問題中唯一真正的問題是是否爲此創建新表,因爲其餘部分是您提到的技術的一組非常直接的任務。

就我個人而言,我會選擇在當前用戶表中添加一列,並用逗號分隔的用戶標識列表填充它,您可以簡單地在其中搜索用戶標識。這樣做的好處是您只需運行一個查詢而不是兩個查詢塊列表所需的查詢,然後在雙表方案中查看用戶的信息。

將用戶添加到阻止列表中很簡單(追加用戶標識或者逗號),並且將用戶從阻止列表中刪除只需要拆分阻止列表,刪除正確的用戶標識,然後通過加入逗號。

此外,如果您需要身份驗證才能查看配置文件,則此功能僅適用於實施配置文件,甚至可以通過創建新帳戶來規避此類系統。

0

在數據庫中存儲配置文件信息(可能是members表?)的每一行上,都可以添加一個名爲「blocked」的行,其中存儲了被阻止的成員的ID號。我會用個人分號和$blocked_ids = explode(";",$blocked)分開這些號碼,以獲得每個被阻止的ID。從那裏,您可以使用:if(in_array($user_id,$blocked_ids))來檢查該人是否被阻止在配置文件中,如果該值位於數組中,則阻止配置文件視圖。

希望這有助於你的任何問題,只是評論如下

0

至於數據庫去,我可能會做這樣的 - 創建特定的塊表。兩個關鍵字段是阻止者的ID和被阻止者的ID。這意味着如果一個人阻止兩個用戶,他將在表中有兩個條目 - 不要嘗試創建一個SQL域來表現爲數組。

目前,您正在設置使用$ _GET參數的PHP階段的標準請求。沒有什麼大錯,但如果你希望整個操作在沒有頁面刷新的情況下發生,你可以使用Ajax。使用jQuery: $ .get(「remove.php」,{uid:「someID」});

+0

我喜歡克里斯的想法。但爲了節約資源,您的解決方案會更適合Bkconrad嗎? – dave 2012-07-17 06:37:53

+1

是的,沒有。克里斯的計劃有一個好處,就是不是每個用戶都需要塊列表空間,我的方案需要關於'maxBlocklistLength * numberOfUsers'字節。如果這個數字是合理的(小到不能成爲一個限制因素),那麼我的方案將使您免於進行第二次查詢。根據我的經驗,查詢比存儲更昂貴。 – bkconrad 2012-07-17 07:08:19

+0

謝謝BKConrad – dave 2012-07-17 20:10:09