2010-02-09 40 views

回答

0

通過用戶名的建議,你的意思是你想登錄表單上預先輸入的自動完成(即一旦你輸入應用程序將顯示與提供的用戶名匹配的所有用戶名),或者,如果新用戶提供現有用戶名,您是否意味着提供潛在備用用戶名的建議框?

如果你正在尋找第一個,我會建議避免這一點。通過爲用戶名提供服務器端自動完成功能,您提供了一種簡單的方式來訪問系統中所有用戶的名稱並降低安全性(因爲嘗試訪問未經許可的網站的用戶只需要確定密碼而不是用戶名和密碼)。

如果是第二種,一種常見方法是在現有用戶名末尾添加數字以提供不存在的用戶名。我建議在MySQL和任何您使用的服務器端語言的組合中進行此操作。

首先,獲取與供給(和已經存在)的用戶名開頭的所有用戶名:

SELECT user_name FROM users where user_name LIKE @userName + '%' 

然後,在你的服務器端語言,請執行以下操作(僞代碼)

let user = username supplied (already exists) 
let recordset = recordset from db call (above)  

i = 0 
alternateCount = 0 
alternatesFound = new string[5] 
while (alternateCount < 5 And i < 100) 
    potentialName = user + i 
    if (recordset does not contain potentialName) 
     alternatesFound[alternateCount] = potentialName 
     alternateCount++ 
    end if 
end while 

這樣做是試圖在所提供的用戶名中插入成數(1,2,3)等,直到找到用戶名唯一的5種情況。它也做了最多100次迭代的情況下user1 - user99被採取(你可以增加這個,但是限制不是一個壞主意

+0

謝謝瑞恩爲你的支持, 可以請你告訴我處理所有邏輯這在一個mysql的存儲過程中。 謝謝 – kiks 2010-02-09 13:39:29

+0

你將不得不做一些你自己的編碼,@kiks。 – ceejayoz 2010-02-09 13:56:34