2012-05-07 1 views
-1

J'ai du mal à faire fonctionner mon code. Lorsqu'un utilisateur saisit un nom d'utilisateur, il vérifie la base de données pour voir si elle existe et, dans l'affirmative, définit le <P id="checkusername"> sur "Nom d'utilisateur saisi". et si ce n'est pas le cas, "Non pris". Je ne vois pas pourquoi mon code ne fonctionne pas.Ajax vérifier si le nom d'utilisateur existe

1-register.html

<html> 
    <body> 
    <CENTER> 
     <form name="register" action="register.php" method="post"> 
     Username: <input type="text" name="username" onkeyup="checkUsername(this.value)" /> 
     <P id="checkusername">checker</P> 
     <input type="submit" value="Login" />  
     </form> 
    </CENTER> 

    <script type="text/javascript"> 
     function checkUsername(){ 
     var xmlhttp; 
     var username=document.forms["register"]["username"].value; 
     if(username.length==0){ 
      document.getElementById("checkusername").innerHTML="Empty"; 
      return; 
     } 
     if(window.XMLHttpRequest){ 
      xmlhttp=new XMLHttpRequest(); 
     }else{ 
      xmlhttp=new ActiveXObject("Microsoft.XMLHTTP"); 
     } 

     var url = "login.php"; 
     var params = "header=checkusername&username="+username+"&password=""; 
     xmlhttp.open("POST", url, true); 
     xmlhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded"); 
     xmlhttp.setRequestHeader("Content-length", params.length); 
     xmlhttp.setRequestHeader("Connection", "close"); 

     xmlhttp.onreadystatechange = function() {//Call a function when the state changes. 
    if(xmlhttp.readyState == 4 && xmlhttp.status == 200){ 
      document.getElementById("checkusername").innerHTML=xmlhttp.responseText; 
    } 
     } 
     xmlhttp.send(params); 
    } 
    </script> 
    </body> 
</html> 

2-register.php

<?php 
    $header = $_POST["header"]; 
    if(header=="checkusername"){ 
    checkusername($_POST["username"]); 
    }else{ 
    echo "No match: " . $header; 
    } 

    function connection(){ 
    $con = mysql_connect(URL, username, password); 
    if(!$con){ 
     die('Could not connect: ' . mysql_error()); 
    } 
    return $con; 
    } 
    function checkusername($username){ 
    $con = connection(); 
    mysql_select_db(database, $con); 
    $result = mysql_query("SELECT * FROM users WHERE username = \"" . $username . "\";"); 
    while($row = mysql_fetch_array($result)){ 
     if(($row['username'] == $username)){ 
     echo "Username Taken.<br/>"; 
     return; 
     } 
    } 
    echo "Not Taken."; 
    } 
    mysql_close(); 
?> 
+1

restreindre votre question aux petits exemples de code. Et seulement les parties pertinentes. –

+0

dans votre boucle while dans le fichier php, vous êtes toujours sortie "Non pris", il devrait être sous avec IF condition .. plus .. pourquoi vous avez besoin de boucle pour voir si le nom d'utilisateur correspond .. votre sql déjà fait .. voir si count est 0 n'est pas pris.else son pris – Kamal

+0

injection SQL repérée – pomeh

Répondre

Questions connexes