將相同的值視爲不同,Jquery通過AJAX捕獲字段輸入和POST到.php。這些字段是「密碼」和「confirmpassword」通過!==
PHP會調用對象與$ _ POST [「密碼」]和$ _ POST方法[「confirmpassword」]作爲參數
的方法有以下檢查其中包括:
} else if ($password !== $confirmPassword){
$response = 'Passwords do not match';
return $response;
}
不管我輸入的迴應是總是「密碼不匹配」。
我將error_log()的值打印在安全的一面,它們是相同的,即不會發生任何修改。
有沒有人知道這是什麼行爲?
UPD 1
我做了一些更多的測試,它似乎是!== BEFORE變量作爲參數傳遞給對象的方法檢查工作正常。然而,當我通過這些值作爲參數傳遞給一類什麼可怕的事情發生了......
UPD 2
這裏(通過「需要」的頁面添加的)是全碼:
一)jQuery的
var signupRegister = function(){
var username = $('#signup-username').val();
var email = $('#signup-email').val();
var password = $('#signup-password').val();
var confirmPassword = $('#signup-confirmpassword').val();
console.log(password);
console.log(confirmPassword);
var data = {action:'signup', username:username, email:email, password:password, confirmPassword:confirmPassword};
$.ajax({
url: 'php/ajaxhandler.php',
dataType: 'json',
type: 'post',
data: data,
success: function(response){
console.log(response.msg);
}
});
};
B)的Ajax處理程序(注意,註釋掉的代碼工作!)
if(isset($_POST['action']) && $_POST['action'] === 'signup'){ //REQUEST 1: validate client input and add player to DB
$player = new Player();
$db = new Database();
/*
if($_POST['password'] !== $_POST['confirmPassword']){
$json['msg'] = 'mismatch';
echo json_encode($json);
} else {
$json['msg'] = 'match';
echo json_encode($json);
}
*/
$result = $player -> validateAndSignup($db, $_POST['username'], $_POST['email'], $_POST['password'], $_POST['confirmPassword']);
if ($result){
$json['msg'] = $result;
echo json_encode($json);
} else {
error_log('Error in $player -> validateAndSignup()');
}
三)播放器類
public function validateAndSignup($db, $username, $email, $password, $confirmPassword){
error_log($password);
error_log($confirmPassword);
if($username === "" || $email == "" || $password = "" || $confirmPassword === ""){
$response = 'Username, email or password missing';
return $response;
} else if (strcmp($password, $confirmPassword) !== 0){
$response = 'Passwords do not match';
return $response;
} else if(preg_match("/[^A-Za-z0-9]/", $username)){
$response = 'Invalid characters in username';
return $response;
}
}
有問題,你寫了$ _POST ['密碼']但在你的代碼中,我注意到你使用的是$密碼。你是否初始化'$ password'變量 – georoot
@ georoot我直接使用$ _POST []作爲參數 – Vadimster
在閱讀你的編輯之後我得到了這個。我猜你正在改變require腳本中的變量數據。你可以在這裏發佈腳本嗎?同時粘貼前後需要的變量轉儲 – georoot