2011-08-13 7 views
1

jquery valid8プラグインを使用して登録フォームを検証しています。問題は、私はユニークなユーザー名のチェックを動作させることはできません。フォームの検証に問題があります

Register.phpコード

<?php include ("db.php"); ?> 
<script src='js/jquery-1.4.2.min.js' type='text/javascript'></script> 
<script src="js/jquery.valid8.js" type="text/javascript" charset="utf-8"></script> 


<?php 
$username = mysql_real_escape_string($_POST['username']); 
$email = mysql_real_escape_string($_POST['email']); 
$password = mysql_real_escape_string($_POST['password']); 


$act=isset($_GET['act'])?$_GET['act']:""; 
if($act=='sub'){ 


$result = mysql_query ("INSERT INTO users (username, email, password) VALUES ('".$username."','".$email."','".$password."')") or die (mysql_error()); 

echo "Data Updated"; 
} 
?> 

<form class="form_user" method="post" action="register.php?act=sub"> 
      <section> 
     <label for="user"> 
     Username 
     </label> 

     <div> 
     <input type="text" tabindex="1" class="input" id="inputUsername" name="username" onblur="check(this)" value="" /> 
     </div> 
    </section> 
    <!--#--> 
    <section> 
     <label for="user_mail"> 
     Email 
     </label> 

     <div> 
     <input type="text" tabindex="2" class="input" id="inputEmail" name="email" value="" /> 
     </div> 
    </section> 
    <!--#--> 
    <section> 
     <label for="pass"> 
     Password 
     </label> 

     <div> 
     <input type="password" tabindex="3" class="input" id="inputPassword" name="password" value="" /> 
     </div> 
    </section> 
    <!--#--> 
    <section> 
     <label for="pass"> 
     Re-type Password 
     </label> 

     <div> 
     <input type="password" tabindex="4" class="input" id="inputConfirmPassword" name="password" value="" /> 
     </div> 
    </section> 
    <!--#--> 
      <br /> 
    <input type="submit" tabindex="5" id="buttonSignup" value="Regisiter" /> 
      </form> 
      </div> 
      </div> 
      </section> 

<script type="text/javascript"> 
      // <![CDATA[  
      $(document).ready(function(){    

       // Set focus to first input 
       $('#inputUsername').focus(); 

       // Custom validator (checks if password == confirm password) 
       function confirmPassword(args){ 
        if(args.password == args.check) 
         return {valid:true} 
        else 
         return {valid:false, message:'Passwords does not match'} 
       } 

       // Username is required 
       $('#inputPassword, #inputUsername').valid8(); 

       // Confirm password must match Password 
       $('#inputConfirmPassword').valid8({ 
        regularExpressions: [ 
         {expression: /^.+$/, errormessage: 'Required'} 
        ], 
        jsFunctions:[ 
         { 'function': confirmPassword, 'values': function(){ 
          return {password: $('#inputPassword').val(), check: $('#inputConfirmPassword').val()} 
         }} 
        ] 
       }); 

       $('#inputUsername').valid8({ 
        regularExpressions: [ 
         {expression: /^.+$/, errormessage: 'Required'} 
        ], 
        ajaxRequests: [ 
         { url: 'class/isUsernameUnique.php'} 
        ] 
       }); 

       $('#inputPolicy').valid8(); 

       $('#inputEmail').valid8({ 
        regularExpressions: [ 
         {expression: /^[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+(aero|asia|biz|cat|com|coop|edu|gov|info|int|jobs|mil|mobi|museum|name|net|org|pro|tel|travel.ac|ad|ae|af|ag|ai|al|am|an|ao|aq|ar|as|at|au|aw|ax|az|ba|bb|bd|be|bf|bg|bh|bi|bj|bm|bn|bo|br|bs|bt|bv|bw|by|bz|ca|cc|cd|cf|cg|ch|ci|ck|cl|cm|cn|co|cr|cu|cv|cx|cy|cz|de|dj|dk|dm|do|dz|ec|ee|eg|er|es|et|eu|fi|fj|fk|fm|.fo|fr|ga|gb|gd|ge|gf|gg|gh|gi|gl|gm|gn|gp|gq|gr|gs|gt|gu|gw|gy|hk|hm|hn|hr|ht|hu|id|ie|.il|im|in|io|iq|ir|is|it|je|jm|jo|jp|ke|kg|kh|ki|km|kn|kp|kr|kw|ky|kz|la|lb|lc|li|lk|lr|ls|lt|lu|lv|ly|ma|mc|md|me|mg|mh|mk|ml|mm|mn|mo|mp|mq|mr|ms|mt|mu|mv|mw|mx|my|mz|na|nc|ne|nf|ng|ni|nl|no|np|nr|nu|nz|om|pa|pe|pf|pg|ph|pk|pl|pm|pn|pr|ps|pt|pw|py|qa|re|ro|rs|ru|rw|sa|sb|sc|sd|se|sg|sh|si|sj|sk|sl|sm|sn|so|sr|st|su|sv|sy|sz|tc|td|tf|tg|th|tj|tk|tl|tm|tn|to|tp|tr|tt|tv|tw|tz|ua|ug|uk|us|uy|uz|va|vc|ve|vg|vi|vn|vu|wf|ws|ye|yt|yu|za|zm|zw)\b$/, errormessage: 'You sure it is valid? The next step in this registration will be sent to the email you enter here.'} 
        ] 
       }); 

       // Check if all input fields are valid 
       $('#buttonSignup').click(function(){ 
        alert('Are input fields valid? ' + $('input').isValid()); 
      }); 




      }); 
      // ]]> 
     </script> 

<span id="msgbox" ></span> 

isUsernameUnique.phpコード

<?php 
    include ("../db.php"); 

    $username = $_GET['username']; 

if(!isUsernameUnique($username)){ 
$json["valid"] = false; 
$json["message"] = 'username is already in use'; 
} 
else { 
$json["valid"] = true; 
} 

function isUsernameUnique($username){ 

    $query = mysql_query("SELECT * FROM users WHERE username ='$username'"); 
    $result = mysql_num_rows($query); 
    if ($result > 0) { 
     $vl = '0'; 
     } 
     if ($result < 1){ 
     $vl = '1';} 

     return ($vl); 

} 

print json_encode($json); 
    ?> 

結果、常に "TRUE"(ユーザー名有り)出てきます。ここで、iはvalid8に間違っ

リンクをしました:http://unwrongest.com/projects/valid8/

+0

のですか? jsまたはPHPで?答えがほしいならば、すべてを投げないでください。 – Bakudan

+0

問題はPHPにあります。 isUsernameUnique.php – maxlk

答えて

1

この

function isUsernameUnique($username){ 

    $query = mysql_query("SELECT * FROM users WHERE username ='$username'"); 
    $result = mysql_num_rows($query); 
    if ($result == 0) 
    { 
     $vl = 0; 
    } 
    else 
    { 
     $vl = 1; 
    } 
    return $vl; 
} 

を試してみて、それが差延を作るなら、私に知らせてください。

+0

これは、ユーザー名が使用中であることを示しています(そうでない場合でも)。私はあなたを忘れたと思う ";" '$ vl = 0;'と '$ vl = 1;' – maxlk

+0

:ごめんなさい!うーん..私も '$ vlを返すのを忘れていた;' ..あなたはそれを含んでいたのですか?それがうまくいかない場合は – ShalomSam

+0

です。その後、if条件をすべて削除してみてください。 $ resultを返します。 – ShalomSam

0

これは、私を助け:

変更:

$username = $_GET['username']; 

へ:

$username = $_POST['value']; 

変数名を、問題が正確である場合はvalue

関連する問題