我想知道如何使用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