Rumah > pembangunan bahagian belakang > tutorial php > Mengapa jQuery Saya Mengesahkan Kaedah Jauh Sentiasa Menunjukkan Ketersediaan Nama Pengguna?

Mengapa jQuery Saya Mengesahkan Kaedah Jauh Sentiasa Menunjukkan Ketersediaan Nama Pengguna?

Barbara Streisand
Lepaskan: 2024-12-15 04:47:15
asal
832 orang telah melayarinya

Why Does My jQuery Validate Remote Method Always Indicate Username Availability?

Kaedah Jauh Sahkan jQuery Gagal Menyemak Ketersediaan Nama Pengguna

Penerangan Isu

Apabila cuba mengesahkan kewujudan nama pengguna dalam pangkalan data menggunakan jQuery.validate, ralat sentiasa dicetuskan, menunjukkan bahawa nama pengguna sudah diambil, walaupun tidak. Masalah timbul dengan kod PHP yang digunakan untuk pengesahan.

Pelaksanaan Awal

Pelaksanaan awal menggunakan kod jQuery berikut:

$("#signupForm").validate({
  rules: {
    username: {
      required: true,
      minlength: 3,
      remote: "check-username.php",
    },
  },
  messages: {
    username: {
      remote: "This username is already taken! Try another.",
    },
  },
});
Salin selepas log masuk

Dan skrip PHP berikut untuk pengesahan :

<?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);
?>
Salin selepas log masuk

Pelaksanaan Selesai

Isu telah diselesaikan dengan menyemak semula skrip PHP. Kod yang diubah suai:

<?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;
?>
Salin selepas log masuk

Analisis

Kod PHP awal menggunakan mysql_real_escape_string untuk membersihkan pembolehubah $name. Walau bagaimanapun, pendekatan yang lebih komprehensif untuk membersihkan input diperlukan. Selain itu, logik pernyataan if-else telah diterbalikkan untuk menghasilkan respons yang betul: if ($result != 0) akan menunjukkan bahawa nama pengguna itu wujud.

Atas ialah kandungan terperinci Mengapa jQuery Saya Mengesahkan Kaedah Jauh Sentiasa Menunjukkan Ketersediaan Nama Pengguna?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan