<input type="text" name="username" size="25" maxlength="15" id="username" onBlur="checkusername()"><div id="checkusername"></div>
<input type="password" name="password" size="25" id="password">
<iframe id="ajaxframe" name="ajaxframe" width="0" height="0" style="display: none"></iframe>
<form id="ajaxform" name="ajaxform" action="ajax.php" method="post" target="ajaxframe">
<input type="hidden" name="action">
<input type="hidden" name="username">
</form>
<script type="text/javascript">
var af = document.ajaxform;
function checkusername() {
af.action.value = 'checkusername';
af.username.value = username;
af.submit();
}
function ajaxresponse(objname, responsetext, succeed) {
var obj = $(objname);
if(succeed) {
obj.innerHTML = '<img src="<?=IMGDIR?>/check_right.gif">';
obj.className = "warning";
} else {
warning(obj, responsetext);
}
}
function warning(obj, msg) {
obj.style.display = '';
obj.innerHTML = '<img src="<?=IMGDIR?>/check_error.gif"> ' + msg;
obj.className = "warning";
}
</script>这是从DISCUZ论坛源码中提取出来的注册模块,我不明白他是用什么方法通过AJAX.PHP用户名的检查后,将"此用户名可注册"或"请换其它用户名进行注册"的信息再返回到当前页面中来,请高手指教!谢谢!
<input type="password" name="password" size="25" id="password">
<iframe id="ajaxframe" name="ajaxframe" width="0" height="0" style="display: none"></iframe>
<form id="ajaxform" name="ajaxform" action="ajax.php" method="post" target="ajaxframe">
<input type="hidden" name="action">
<input type="hidden" name="username">
</form>
<script type="text/javascript">
var af = document.ajaxform;
function checkusername() {
af.action.value = 'checkusername';
af.username.value = username;
af.submit();
}
function ajaxresponse(objname, responsetext, succeed) {
var obj = $(objname);
if(succeed) {
obj.innerHTML = '<img src="<?=IMGDIR?>/check_right.gif">';
obj.className = "warning";
} else {
warning(obj, responsetext);
}
}
function warning(obj, msg) {
obj.style.display = '';
obj.innerHTML = '<img src="<?=IMGDIR?>/check_error.gif"> ' + msg;
obj.className = "warning";
}
</script>这是从DISCUZ论坛源码中提取出来的注册模块,我不明白他是用什么方法通过AJAX.PHP用户名的检查后,将"此用户名可注册"或"请换其它用户名进行注册"的信息再返回到当前页面中来,请高手指教!谢谢!
<?php/*
[Discuz!] (C)2001-2006 Comsenz Inc.
This is NOT a freeware, use is subject to license terms $RCSfile: ajax.php,v $
$Revision: 1.20 $
$Date: 2006/08/10 10:23:30 $
*/require_once './include/common.inc.php';if(in_array($action, array('checkseccode', 'checkusername', 'checkemail')) && submitcheck('checksubmit')) { if(!$headercharset) {
@header('Content-Type: text/html; charset='.$charset);
} @include_once language('messages'); if($action == 'checkseccode') { if(intval($seccodeverify) != intval($seccode)) {
ajaxmessage('checkseccode', $language['submit_seccode_invalid']);
} else {
ajaxmessage('checkseccode', 'succeed', 1);
} } elseif($action == 'checkusername') { $username = trim($username); $guestexp = '\xA1\xA1|^Guest|^\xD3\xCE\xBF\xCD|\xB9\x43\xAB\xC8';
$censorexp = '/^('.str_replace(array('\\*', "\r\n", ' '), array('.*', '|', ''), preg_quote(($censoruser = trim($censoruser)), '/')).')$/i';
if(preg_match("/^\s*$|^c:\\con\\con$|[%,\*\"\s\t\<\>\&]|$guestexp/is", $username) || ($censoruser && @preg_match($censorexp, $username))) {
ajaxmessage('checkusername', $language['profile_username_illegal']);
} $query = $db->query("SELECT uid FROM {$tablepre}members WHERE username='$username'");
$username = dhtmlspecialchars(stripslashes($username)); if($db->num_rows($query)) {
eval("\$ajaxmessage = \"".$language['register_check_found']."\";");
ajaxmessage('checkusername', $ajaxmessage);
} else {
ajaxmessage('checkusername', 'succeed', 1);
} } elseif($action == 'checkemail' && !$doublee) { $email = trim($email); $query = $db->query("SELECT uid FROM {$tablepre}members WHERE email='$email' LIMIT 1");
if($db->num_rows($query)) {
ajaxmessage('checkemail', $language['profile_email_duplicate']);
} else {
ajaxmessage('checkemail', 'succeed', 1);
}
}
}function ajaxmessage($objname, $message, $succeed = '0') {
echo "<script language=\"JavaScript\">parent.ajaxresponse('$objname', \"".str_replace('"', '\"', $message)."\", $succeed);</script>";
exit;
}?>