2012-05-07 10 views
-1

私のコードを正常に動作させるのに問題があります。ユーザーがユーザー名を入力すると、データベースが存在するかどうかを確認し、存在する場合は<P id="checkusername">を「取得したユーザー名」に設定します。そうでない場合は「取らない」に設定します。なぜ私のコードが動作していないのかわかりません。ユーザー名が存在するかどうかAjaxで確認します。

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

を読むより小さなコード例にあなたの質問を制限します。そして関連する部分だけ。 PHPのwhileループで –

+0

を実行すると、常に "Not taken"と出力されます。IF条件を満たしている必要があります。さらに、usernameが一致するかどうかをループする必要があります。カウントが0であるかどうかを確認してください。取りました – Kamal

+0

SQLインジェクションが見つかった – pomeh

答えて

関連する問題