表单验证问题

时间:2011-08-13 14:16:15

标签: php javascript jquery mysql

我使用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);
    ?>

结果总是出现&#34; TRUE&#34; (用户名可用)。我哪里做错了

指向valid8:http://unwrongest.com/projects/valid8/

的链接

2 个答案:

答案 0 :(得分: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;
}

让我知道这是否有所作为。

答案 1 :(得分:0)

这对我有所帮助:

变化:

$username = $_GET['username'];

要:

$username = $_POST['value'];

变量名称为value