Comprobar usuario disponible con ASP y AJAX

Cuando vamos a crear una cuenta nueva en un sitio es muy molesto el que tengamos que llenar un largo formulario, con campos innecesarios, y encima de eso enterarnos que el usuario que pusimos ya existe, esto nos dara un error en que en el mejor de los casos el sitio nos regresara con los demas datos llenos solicitando solamente ingresemos otro usuario diferente, muchas de estas veces teniendo que ingresar la clave nuevamente.

Esto se puede solucionar muy facil con AJAX, enviando una peticion a la base de datos de usuarios para que compruebe si el que ingresamos existe o no

La magia del codigo nuevamente la hace AJAX, aqui el codigo:

PAGINA ajax.asp:
<!DOCTYPE HTML PUBLIC “-//W3C//DTD HTML 4.0 Transitional//EN”>
<HTML>
<HEAD>
<TITLE>ASP and AJAX username availability check</TITLE>
<script language=”javascript”>
function OnChangedUsername()
{
if(document.form1.newuserid.value == “”)
{
document.form1.btnCheckAvailability.disabled = true;
}
else
{
document.form1.btnCheckAvailability.disabled = false;
}
}
function createRequestObject() {
var ro;
var browser = navigator.appName;
if(browser == “Microsoft Internet Explorer”){
ro = new ActiveXObject(”Microsoft.XMLHTTP”);
}else{
ro = new XMLHttpRequest();
}
return ro;
}

var http = createRequestObject();
function sndReq() {
http.open(’get’, ‘ajax_username.asp?username=’+document.form1.newuserid.value);
http.onreadystatechange = handleResponse;
http.send(null);
}

function handleResponse() {
if(http.readyState == 4){
var response = http.responseText;
var update = new Array();

if(response.indexOf(’|’ != -1)) {
update = response.split(’|');
document.getElementById(”username_chk”).innerHTML = update[0];
}
}
}
</script>
</HEAD>
<BODY>

<form method=”post” action=”javascript:void(0);” name=”form1″>
<table>
<tr>
<td><input type=”newuserid” name=”newuserid” id=”newuserid” size=”20″ onKeyUp=”OnChangedUsername();” />

</td>
</tr>
<tr>
<td><input id=”btnCheckAvailability” type=”button” disabled=”disabled” value=”Check Availability” onClick=”sndReq();”></td>
</tr>
<tr>
<td><div ID=”username_chk”></div></td>
</tr>
<tr>
<td>Brought to you by <a href=”http://strangework.com” target=”_blank”>Brad Williams</a></td>
</tr>
</table>
</form>

</BODY>
</HTML>



PAGINA ajax_username.asp:
<%
Set username = Request.QueryString(”username”)

‘*** INICIAR TU CONEXION DNS-LESS
db_username = “username” ‘DB username
db_password = “password” ‘DB password
db_catalog = “database_name” ‘DB name
dp_datasource = “192.168.1.1″ ‘DB IP
‘*** TERMINA TU CONEXION DNS-LESS

'PUEDES CAMBIAR LO DE ARRIBA POR TUS PROPIAS LINEAS DE CONEXION

Set conn = Server.CreateObject(”ADODB.Connection”)
conn.CommandTimeout = 0
c=”Provider=SQLOLEDB.1;User ID=” & db_username & “;password=” & db_password & “;Initial Catalog=” & db_catalog & “;Data Source=” & dp_datasource & “;Use Procedure for Prepare=1;Auto Translate=True;Packet Size=4096″
conn.Open c

‘*** AJUSTA ESTE SELECT PARA QUE COMPRUEBE CON LOS NOMBRES REALES DE TU TABLA
SQL = “SELECT username FROM table WHERE username=’” & username & “‘ ”
Set chk_username = Server.CreateObject(”ADODB.Recordset”)
chk_username.Open SQL, conn, 3, 3
If chk_username.EOF = False then
response.write “USUARIO NO DISPONIBLE”
Else
response.write “USUARIO DISPONIBLE”
End if

chk_username.close
set chk_username = nothing

conn.close
set conn = nothing
%>



0 comentarios: