![](/img/trans.png)
[英]Yii Framework 2.0 $model->validate always returns true
[英]jquery validate - remote always returns true
我有一個表單,我正在使用 jQuery 驗證插件。
我還使用遠程檢查用戶名和電子郵件是否可用,但我總是從腳本中得到錯誤信息。
這是jquery驗證部分:
$(document).ready(function () {
$('#registration').validate({
rules: {
email: {
email: true,
remote:{
url: "./php/checkemail.php",
type: "POST",
}
},
username: {
minlength: 4,
maxlength: 16,
remote: {
url: "./php/checkusername.php",
type: "POST",
}
},
messages: {
email: {
email: "Please enter a valid e-mail address.",
remote: "This email is already registered.",
},
username: {
minlength: "Your username must be at least 4 characters long but less than 16",
maxlength: "Your username must be at least 4 characters long but less than 16",
remote: "This username is already registered.",
},
submitHandler: function(form) {
$('#registration').ajaxSubmit();
return false;
},
});
});
這是 checkemail.php 文件:
$mysqli = mysqli_init();
if(isset($_POST['email'])) {
$email = mysqli_real_escape_string(strtolower($_POST['email']));
$check= mysqli_query("SELECT * FROM users WHERE LOWER email = '$email'");
if(mysqli_stmt_num_rows($check)!=0) {
echo json_encode(false);
} else {
echo json_encode(true);
}
}
誰能告訴我我做錯了什么以及如何解決它?
此外,即使我更改腳本以向我發送 true,來自驗證腳本的遠程消息也不會出現在我的表單上。
我認為遠程函數正在檢查字符串。
所以試試這個:
if(mysqli_stmt_num_rows($check)!=0) {
echo 'false';
} else {
echo 'true';
}
所以,問題是我使用的 php 已被棄用,當我將其更改為新版本時,我做錯了……所以正確的做法是這樣的:
if(isset($_POST['email']))
{
$email = mysqli_real_escape_string($link, $_POST['email']);
$check= mysqli_query($link, "SELECT * FROM users WHERE email = '".$email."'") or die(mysqli_error($link));
if(mysqli_num_rows($check)!=0)
{
echo 'false';
}別的{
echo 'true';
}
}
mysqli_close($link);
?>
其中 $link 是到 mysql 數據庫的連接:
$link = mysqli_connect("$db_host", "$db_username", "$db_password", "$db_database") 要么死 ("Error " . mysqli_error($link));
現在它工作得很好。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.