user_register.htm 用户注册的htm,
<html>
<head><meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<title>注册页面</title>
<script language="javascript" type="text/javascript" >
//初始化AJAX对象
function InitAjax()
{
var ajax = false;
if(window.XMLHttpRequest) {
ajax = new XMLHttpRequest();
} else if(window.ActiveXObject) {
ajax = new ActiveXObject('Microsoft.XMLHTTP');
}
return ajax;
}
//AJAX 应用实体
function sendajax(sURL, pdata, obj,type) //,sURL是可以验证的页面,pdata是要验证的变量值,obj是要显示的处理结果,type是自定义的区分username还是email
{
var ajax = InitAjax();
//以POST方式传递
ajax.open('POST',sURL,true);
//传递pdata值
ajax.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
ajax.onreadystatechange=function()
{
if(ajax.readyState==4)
{
if(ajax.status!=200)
{
self.status="访问出错,请重试!";
}
else
{
// eval(ajax.responseText);
obj.innerHTML=ajax.responseText;
// delete ajax;
// ajax=null;
// CollectGarbage();
}
}
}
switch(type) // 区分是username还是email的请求
{
case 1:
ajax.send('username=' + pdata); //将值传递给php页面验证
case 2:
ajax.send('email=' + pdata);
default:
ajax.send(null);
}
}
function check()
{
if(form.password.value=='')
{
alert("请输入密码!");
}
if(form.re_password.value!=form.password.value)
{
alert("两次输入的密码不一致");
return false;
}
else
{
return true;
}
}
</script>
</head>
<body>
<b>注册会员</b>
<form id="form" name="register" action="register.php" method="post">
<table align="center" width="60%">
<tr><td>会员名</td><td><input type="text" name="username" οnblur="sendajax('userajax.php?action=check_user',this.value,usernameMsg,1)"></td>
<td id="usernameMsg"></td> </tr>
<tr><td>电子邮箱</td><td><input type="text" name="email" οnblur="sendajax('userajax.php?action=check_email',this.value,passwordMsg,2)"></td>
<td id="passwordMsg"></td></tr>
<tr><td>密码</td><td><input type="password" name="password" οnblur="check()"></td></tr>
<tr><td>再次输入密码</td><td><input type="password" name="re_password" ></td></tr>
<tr><input type="hidden" name="action" value="register"></tr>
<tr><td colspan="2" align="center"><input type="submit" name="OK" value="提交" οnclick="return check()"><input type="reset" name="reset" value="重置"></td></tr>
</body>
</html>
userajax.php //验证用户名和邮箱是否已被注册
<?php
include("inc.php"); //配置的连接数据库的类
$username = isset($_POST['username'])? trim($_POST['username']):'';
$password = isset($_POST['password'])? trim($_POST['password']):'';
$email = isset($_POST['email'])? trim($_POST['email']):'';
$other = isset($_POST['other'])? trim($_POST['other']):array();
$action = isset($_GET['action'])? trim($_GET['action']):'';
header("Content-type:text/html;charset=gb2312"); //必须得,若没有此行,返回的echo中文值为乱码
//验证用户名是否可以注册
if ($action=='check_user')
{
if(strlen($username)<3)
{
echo "用户名长度不能少于3个字符";
}
elseif(!check_user($username))
{
echo "*该用户名已经存在,请重新输入";
}
else
{
echo "可以注册";
}
}
//验证用户邮箱是否被注册
if ($action=='check_email')
{
// $email= trim($_POST['email']);
if(!check_email($email))
{
echo "*该邮箱已存在,请重新输入";
}
else
{
echo "可以注册";
}
}
//检查用户名
function check_user($username)
{
global $db;
if ($db->getOne("select count(*) from users where user_name='" .$username. "'")>0)
{
return false;
}
else
{
return true;
}
}
//检测邮箱地址
function check_email($email)
{
global $db;
if ($db->getOne("select count(*) from users where email='" .$email. "'")>0)
{
return false;
}
else
{
return true;
}
}
?>