用户名唯一性验证的实现
在一些需要用户注册的系统中,由于系统需要保证用户名的唯一性,在注册时往往需要检查用户名。在一些使用传统方式设计的网站中,往往需要提交整个页面来进行用户名唯一性的检查。这种方式虽然可以正确检测用户名的唯一性,但是对于用户的友好度比较差。
使用Ajax进行用户名唯一性检查可以在不影响用户表单填写的情况下执行,大大增加了表单的友好度。以下代码是一个进行用户名唯一性验证的例子。
- <html>
- <head>
- <title>AjaxExample</title>
- <scripttype="text/javascript">
- varxmlobj;//定义XMLHttpRequest对象
- functionCreateXMLHttpRequest()
- {
- if(window.ActiveXObject) //如果当前浏览器支持ActiveXobject,则创建ActiveXObject对象
- {
- xmlobj=newActiveXObject("Microsoft.XMLHTTP");
- }
- elseif(window.XMLHttpRequest)//如果当前浏览器支持XMLHttpRequest,则创建XMLHttpRequest对象
- {
- xmlobj=newXMLHttpRequest();
- }
- }
- functionValidate()//主程序函数
- {
- CreateXMLHttpRequest();//创建对象
- varshowurl="validate.php?username="+document.getElementById("username").value;//构造URL
- xmlobj.open("GET",showurl,true);//调用validate.php
- xmlobj.onreadystatechange=StatHandler;//判断URL调用的状态值并处理
- xmlobj.send(null);//设置为不发送给服务器任何数据
- }
- functionStatHandler()//用于处理状态的函数
- {
- if(xmlobj.readyState==4&&xmlobj.status==200)//如果URL成功访问,则输出网页
- {
- if(xmlobj.responseText=="1")//检查用户名是否有效
- {
- document.getElementById("msg").innerHTML="<fontcolor=RED>该用户名已被人使用</font>";
- }
- elseif(xmlobj.responseText=="0")
- {
- document.getElementById("msg").innerHTML="<fontcolor=GREEN>该用户名未被人使用</font>";
- }
- else
- {
- document.getElementById("msg").innerHTML="<fontcolor=RED>用户名验证程序出错</font>";
- }
- }
- }
- </script>
- </head>
- <body>
- <p><formaction="">
- 用户名:<inputtype="text"id="username">
- <inputtype="button"value="用户名验证"onclick="Validate();">
- <divid="msg"></div>
- </form></p>
- </body>
- </html>
上面的代码通过请求validate.php来执行用户名的唯一性验证,并根据validate.php的返回内容来决定用户名是否唯一,代码如下所示。
- <?php
- $conn=mysql_connect("localhost","root","");
- $user=$_GET['username'];
- $querySQL="SELECT*FROMusersWHEREusername='$user'";
- mysql_select_db("cms",$conn);
- $rs=mysql_query($querySQL,$conn)ordie("Error");
- $rs_cnt=mysql_num_rows($rs);
- echo$rs_cnt;
- ?>
运行结果如图50-6所示。