Часть формы где у нас инпут для логина:
echo "<input type='text' id='login' name='login' onblur='checkName(this.value, \"\")'/>";
echo " — <label for='login'>LOGIN</label><br/>";
echo "<span class='hidden' id='nameCheckFailed'>NOT AVAILABLE</span>";
echo "<span class='hidden' id='nameCheckOK'>AVAILABLE</span><br/>";
Яваскрипт, подключенный например где-то в head:
function checkName(input,response) {
if (response != '') {
failtext=document.getElementById('nameCheckFailed');
oktext=document.getElementById('nameCheckOK');
if (response == '1') {
failtext.className='failtext';
oktext.className='hidden';
}
else {
failtext.className='hidden';
oktext.className='oktext';
}
}
else {
if (input != '') {
url='http://hostname/xml/checkUserName.php?q='+input;
loadXMLDoc(url);
}
else {
failtext.className='hidden';
oktext.className='hidden';
}
}
}
var req;
function loadXMLDoc(url) {
if (window.XMLHttpRequest) {
req = new XMLHttpRequest();
req.onreadystatechange=processReqChange;
req.open("GET",url,true);
req.send(null);
}
else if (window.ActiveXObject) {
req = new ActiveXObject("Micrisoft.XMLHTTP");
if (req) {
req.onreadystatechange=processReqchange;
req.open("GET",url,true);
req.send();
}
}
}
function processReqChange() {
if (req.readyState == 4) {
if (req.status == 200) {
response=req.responseXML.documentElement;
method=response.getElementsByTagName('method')[0].firstChild.data;
result=response.getElementsByTagName('result')[0].firstChild.data;
eval(method + '(\'\', result)');
}
else {
alert("There was a problem retrieving the XML data:\n"+req.statusText);
}
}
}
Файл /xml/checkUserName.php (в первой строчке инклуд подключения к БД, если не знаем что там и как — гуглим, еще конечно должна существовать таблица users с полем username, в которое пишутся логины)
<?php
include ($_SERVER['DOCUMENT_ROOT']."/include/dbconfig.php");
header('Content-Type: text/xml');
echo '<?xml version="1.0" encoding="UTF-8" standalone="yes"?>';
function nameInUse($q) {
$query=mysql_query("SELECT COUNT(*) FROM users WHERE username='".$q."'");
$result=mysql_fetch_array($query);
switch($result[0]) {
case '1' :
return '1';
break;
default:
return '0';
}
}
echo '<response>
<method>checkName</method>
<result>'.nameInUse($_GET['q']).'</result>
</response>';
?>
И CSS:
span.hidden {
display:none;
}
span.failtext {
display: inline;
background: #ffebea;
}
span.oktext {
display: inline;
background-color: #efffea;;
}
На основе: http://wmdn.ru/javascript/example-of-check-login-using-ajax/
Вариант от WMDN: http://wmdn.ru/javascript/example-of-check-login-using-ajax/