Rumah >pembangunan bahagian belakang >tutorial php >Mengapa jQuery Saya Mengesahkan Kaedah Jauh Sentiasa Menunjukkan Kewujudan Nama Pengguna?
Kaedah Jauh Mengesahkan jQuery: Mengesahkan Kewujudan Nama Pengguna
jQuery Validate menyediakan kaedah jauh yang membolehkan anda menyemak sama ada nilai sudah wujud dalam pangkalan data. Walau bagaimanapun, kadangkala anda mungkin menghadapi senario di mana pengesahan sentiasa dicetuskan, menunjukkan bahawa nama pengguna diambil walaupun ia tidak.
Spesifikasi Masalah
Pertimbangkan jQuery berikut dan kod PHP yang cuba mengesahkan kewujudan nama pengguna:
// jQuery $("#signupForm").validate({ rules: { username: { required: true, minlength: 3, remote: "check-username.php" } }, messages: { username:{ remote: "This username is already taken! Try another." } } }); // check-username.php <?php require_once "./source/includes/data.php"; header('Content-type: application/json'); $name = mysql_real_escape_string($_POST['username']); $check_for_username = mysql_query("SELECT username FROM mmh_user_info WHERE username='$name'"); if (mysql_num_rows($check_for_username) > 0) { $output = true; } else { $output = false; } echo json_encode($output); ?>
Kod ini secara konsisten melaporkan nama pengguna sebagai diambil, walaupun ia tidak wujud.
Penyelesaian
Untuk menyelesaikan isu ini, anda perlu mengubah suai skrip PHP. Khususnya, pertanyaan yang digunakan untuk menyemak kewujudan nama pengguna harus dikemas kini:
// check-username.php <?php require_once "./source/includes/data.php"; header('Content-type: application/json'); $request = $_REQUEST['username']; $query = mysql_query("SELECT * FROM mmh_user_info WHERE username ='$username'"); $result = mysql_num_rows($query); if ($result == 0){ $valid = 'true';} else{ $valid = 'false'; } echo $valid; ?>
Skrip PHP sebelumnya menggunakan mysql_real_escape_string untuk melindungi daripada suntikan SQL, tetapi ia tidak memasukkan pembolehubah $username dalam pertanyaan. Ini mengakibatkan semakan yang salah yang sentiasa mengembalikan hasil yang positif, menunjukkan bahawa nama pengguna telah diambil.
Dengan skrip PHP yang disemak, pertanyaan dengan betul menyemak kewujudan nama pengguna tertentu, memastikan pengesahan yang tepat.
Atas ialah kandungan terperinci Mengapa jQuery Saya Mengesahkan Kaedah Jauh Sentiasa Menunjukkan Kewujudan Nama Pengguna?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!