我使用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; (用户名可用)。我哪里做错了
的链接答案 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