我想知道如何使用Javascript進行驗證,如果用戶在創建帳戶時輸入了任何用戶名,它已經存在於數據庫中並要求用戶輸入任何其他用戶名?如何使用Javascript驗證用戶名?
回答
- 爲
<input />
元素附加偵聽器blur
事件。 - 使用AJAX發送請求發送到服務器(與字段值作爲參數)
- 在服務器側單向是否給定的用戶名是已經在使用或不
- 基於服務器的響應顯示(或不)上該用戶名是已經在使用消息
的jQuery(我對純JS太懶惰)+ PHP代碼示例:
<form ...>
...
<input type="text" name="username" id="input-username" />
<p class="error"></p>
...
$("#input-username").blur(function() {
$.post("/check-username.php", { username: $(this).val() }, function(data) {
if ("0" == data) { /* username in use */
$(this).next("p").text("This username is already in use.</p>");
} else { /* username is fine */
$(this).next("p").empty();
}
});
});
<?php
$username = $_POST['username'];
// check whether given username exists in database
$usernameExists = ...;
echo $usernameExists ? '0' : '1'; // 0 if exists, 1 if not.
答案是AJAX。如果您必須針對數據庫進行驗證,則需要打電話給服務器。唯一的方法是在不重新加載頁面的情況下(編輯:正確)是AJAX。你如何實現它將取決於你正在使用的JavaScript庫,以及你的服務器是什麼樣的。我建議你做一點搜索和閱讀 - 這是一個很常見的用例。
*不重新加載頁面的唯一方法就是AJAX。* 呃...從技術上講,AJAX並不是唯一的解決方案,但它是唯一值得考慮的。 – Crozin 2010-05-15 22:02:07
@Crozin:的確如此。你可以做一些事情,比如加載頁面的每個用戶名或AJAX式的東西,就像是一個古怪的iframe。有無數的錯誤的方法來做到這一點。 – 2010-05-15 22:06:28
阿賈克斯可能不唯一的解決方案,因爲用戶名通常是公開的。一個簡單的方法是在某個時候只需要一個RDF/XML文檔(只需要添加每個新用戶就可以更新),其中包含站點上所有用戶的列表,您可以通過Javascript DOM輕鬆遍歷該用戶,以查看該用戶已在使用中。你也讓他們支付計算能力,而不是你,這取決於你有多好,這是一種優勢或劣勢。
可能,但這種解決方案非常糟糕。這是一個O(n)的搜索成本,帶寬成本巨大,文件更新昂貴(帶有資源爭用)等等。相比之下,最佳解決方案使用的帶寬要少得多,而且速度更快,效率更高。 – 2010-05-15 22:12:38
文檔更新是一個空參數,XML文件顯然會在每次請求時動態生成,而且它可以用於其他原因,這就是爲什麼我建議使用RDF/XML,就像我輸入的頁面一樣是。帶寬也低於人們預期的水平。裝載此社區所有用戶名的專用RDF文件的大小約爲加載顯示此頁所需的大小的四分之一。 – Zorf 2010-05-15 22:19:18
除了性能差,這實際上與是否使用AJAX是正交的。對於直接查找(/ isUsernameTaken?username = foo)或訪問XML文檔(/allUserNames.xml),您都可以使用AJAX或其他解決方案(例如,隱藏的iframe)。 – 2010-05-15 22:20:43
就個人而言,我會使用JQuery驗證插件來簡化事情。 http://bassistance.de/jquery-plugins/jquery-plugin-validation/
但一般將包括一個小的AJAX請求到服務器(即JSON對象)與用戶名的,做在你的數據庫中的「搜索」,並返回true/false後才用戶點擊進入或在文本框中添加標籤(附加一個事件監聽器)。然後在您的回調響應中,更改您選擇的DOM元素,以向您的用戶指示帳戶名稱是否已存在於數據庫中。
- 1. 如何使用php驗證用戶名?
- 2. 用戶名驗證
- 3. 驗證用戶的UTF-8名在Javascript
- 4. 如何在PayPal驗證用戶名
- 5. 使用JavaScript驗證用戶輸入
- 6. 如何使用用戶名/密碼使用Devise和Android驗證用戶?
- 7. 如何使用firebase sdk驗證用戶
- 8. 使用用戶名使用UnboundID驗證Active Directory用戶
- 9. Javascript用戶輸入驗證
- 10. Javascript驗證用戶輸入
- 11. Javascript用戶輸入驗證
- 12. JQuery用戶名驗證
- 13. 驗證用戶名和MVC5
- 14. JQuery用戶名驗證
- 15. 如何驗證在Sharepoint中使用Javascript登錄的用戶
- 16. 如何驗證用戶登錄使用nodejs,javascript和nedb
- 17. 如何使用正則表達式驗證用戶名?
- 18. 如何驗證密碼並確保用戶名未被使用?
- 19. 如何使用鑰匙串驗證用戶名和密碼
- 20. 如何使用數據集驗證用戶名和密碼
- 21. 如何使用數組驗證用戶名和密碼
- 22. 如何使用正則表達式驗證用戶名?
- 23. 使用JavaScript Spring MVC客戶端驗證
- 24. 使用JavaScript驗證
- 25. 如何驗證Windows用戶?
- 26. AJAX如何驗證用戶?
- 27. 如何驗證多用戶
- 28. 如何驗證用戶
- 29. 使用Windows身份驗證和匿名身份驗證獲取用戶名
- 30. 如何使用JavaScript驗證複選框
簡答題;只有javascript:你不能 – 2010-05-15 22:02:00
那麼什麼是阻止某人在客戶端JavaScript檢查後使用tamperdata發佈自己的用戶名? – rook 2010-05-15 22:17:50
@The Rook:這是一個不錯的觀點,但不言而喻,客戶端支票不應該成爲任何事情的最後防線。這並不意味着不應該有客戶端驗證。這對用戶有所幫助,而不是數據完整性。 – 2010-05-15 22:19:52