ajax之用户名唯一性验证的实现(php)

用户名唯一性验证的实现

在一些需要用户注册的系统中,由于系统需要保证用户名的唯一性,在注册时往往需要检查用户名。在一些使用传统方式设计的网站中,往往需要提交整个页面来进行用户名唯一性的检查。这种方式虽然可以正确检测用户名的唯一性,但是对于用户的友好度比较差。

使用Ajax进行用户名唯一性检查可以在不影响用户表单填写的情况下执行,大大增加了表单的友好度。以下代码是一个进行用户名唯一性验证的例子。

  1. <html>
  2. <head>
  3. <title>AjaxExample</title>
  4. <scripttype="text/javascript">
  5. varxmlobj;//定义XMLHttpRequest对象
  6. functionCreateXMLHttpRequest()
  7. {
  8. if(window.ActiveXObject) //如果当前浏览器支持ActiveXobject,则创建ActiveXObject对象
  9. {
  10. xmlobj=newActiveXObject("Microsoft.XMLHTTP");
  11. }
  12. elseif(window.XMLHttpRequest)//如果当前浏览器支持XMLHttpRequest,则创建XMLHttpRequest对象
  13. {
  14. xmlobj=newXMLHttpRequest();
  15. }
  16. }
  17. functionValidate()//主程序函数
  18. {
  19. CreateXMLHttpRequest();//创建对象
  20. varshowurl="validate.php?username="+document.getElementById("username").value;//构造URL
  21. xmlobj.open("GET",showurl,true);//调用validate.php
  22. xmlobj.onreadystatechange=StatHandler;//判断URL调用的状态值并处理
  23. xmlobj.send(null);//设置为不发送给服务器任何数据
  24. }
  25. functionStatHandler()//用于处理状态的函数
  26. {
  27. if(xmlobj.readyState==4&&xmlobj.status==200)//如果URL成功访问,则输出网页
  28. {
  29. if(xmlobj.responseText=="1")//检查用户名是否有效
  30. {
  31. document.getElementById("msg").innerHTML="<fontcolor=RED>该用户名已被人使用</font>";
  32. }
  33. elseif(xmlobj.responseText=="0")
  34. {
  35. document.getElementById("msg").innerHTML="<fontcolor=GREEN>该用户名未被人使用</font>";
  36. }
  37. else
  38. {
  39. document.getElementById("msg").innerHTML="<fontcolor=RED>用户名验证程序出错</font>";
  40. }
  41. }
  42. }
  43. </script>
  44. </head>
  45. <body>
  46. <p><formaction="">
  47. 用户名:<inputtype="text"id="username">
  48. <inputtype="button"value="用户名验证"onclick="Validate();">
  49. <divid="msg"></div>
  50. </form></p>
  51. </body>
  52. </html>

上面的代码通过请求validate.php来执行用户名的唯一性验证,并根据validate.php的返回内容来决定用户名是否唯一,代码如下所示。

  1. <?php
  2. $conn=mysql_connect("localhost","root","");
  3. $user=$_GET['username'];
  4. $querySQL="SELECT*FROMusersWHEREusername='$user'";
  5. mysql_select_db("cms",$conn);
  6. $rs=mysql_query($querySQL,$conn)ordie("Error");
  7. $rs_cnt=mysql_num_rows($rs);
  8. echo$rs_cnt;
  9. ?>

运行结果如图50-6所示。

你可能感兴趣的:(PHP,Ajax,mysql,cms,浏览器)