In queste righe di codice mi servono per eseguire una semplice registrazione. Vicino all'imput type username io volevo far comparire una stringa in continuo aggiornamento che mi dice se tale username che l'utente sta inserendo è già inserito o no.
registrazione.html
codice:
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Documento senza titolo</title>
<script type="text/javascript" src="controllo.js"></script>
</head>
<body>
<script type="text/javascript">
process();
</script>
<form action="registrazione.php" method="post" >
Nome: <input type="text" name="nome" required>
Cognome: <input type="text" name="cognome" required>
Citta: <input type="text" name="citta" required>
Via: <input type="text" name="via" required>
Telefono: <input type="tel" name="telefono"required >
Username: <input type="text" name="user" id="myname" required>
<div id="divMessage" />
Password: <input type="password" name="password" required>
E-mail: <input type="email" name="email" required>
<input type="submit" value="Invia" >
</body>
</html>
controllo.js
codice:
var xmlHttp=createXmlHttpRequestObject();
function createXmlHttpRequestObject()
{
var xmlHttp;
//se l'utente usa internet explorer
if(window.ActiveXObject)
{
try
{
xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");
}
catch (e)
{
xmlHttp=false;
}
}
//se usa altri browser
else
{
try
{
xmlHttp=new XMLHttpRequest();
}
catch (e)
{
xmlHttp=false;
}
}
if(!xmlHttp)
alert("errore durante la creazione dell'oggeto XMLHttpRequest.");
else
return xmlHttp;
}
//----------------------------------------------------------------------------------------------------------------------------
function process()
{
if (xmlHttp.readyState == 4 || xmlHttp.readyState == 0)
{
name = encodeURIComponent(document.getElemnetById("myname").value);
xmlHttp.open("GET", "controlloUser.php?name=" +name, true);
xmlHttp.onreadystatechange=handleServerResponse;
xmlHttp.send(null);
}
else
setTimeout('process()', 1000);
}
//-----------------------------------------------------------------------------------------------------------------------------
function handleServerResponse()
{
if (xmlHttp.readyState ==4)
{
if (xmlHttp.status ==200)
{
xmlResponse = xmlHttp.responseXML;
xmlDocumentElement=xmlResponse.documentElement;
element.helloMessage = xmlDocumentElement.firstChild.data;
document.getElementById("divMessage").innerHTML= helloMessage;
setTimeout('process()', 1000);
}
else
{
alert("C'è stato un problema nell'accesso del server: " + xmlHttp.statusText);
}
}
}
controlloUser.php
Codice PHP:
<?php
header('Content-Type: text/xml');
echo "<?xml version='1.0' encoding='UTF-8' standalone='yes'?>";
echo '<response>';
$host="localhost";
$username="root";
$password="";
$conn=mysql_connect($host,$username,$password);
if(!$conn)
{
echo"errore connessione";
}
mysql_select_db("temporaneo", $conn)
or die ("errore nella connessione con il database");
$username=$_GET['name'];
$sql="select username from utenti where username='$username' ";
$ab=mysql_query($sql);
if ($ab==false) die("errore nel controllo dei doppi");
if (mysql_num_rows($ab)>=1) die("Il nome utente esiste, inseriscine un'altro!!");
echo '</response>';
?>
In teoria mentre digito l'username vicino dovrebbe comparire la stringa "username usato" solo se l'username è veramente usato, invece non succede niente. Anche quando faccio il GET manuale del file php (controlloUser.php?name=usergiausato) mi restituisce l'errore "Errore interpretazione XML: nessun elemento trovato". Consigli????? Vi prego aiutatemi!