我正在使用ajax函数来返回不同类型的登录值。我试图避免三种问题:
1 - 如果用户的登录错误
2 - 如果用户的 SN 错误
3 - 如果用户的密码错误
在我的 php 文件中,我搜索数据是否存在,如果不存在,我将向未找到的错误发送一种错误:
$connect = new database();
$info = mysql_query("SELECT * FROM myinfo WHERE myinfo.user_login = '$login_user'");
if (mysql_num_rows($info) == 0) {
echo 'error_login';
}
$info2 = mysql_query("SELECT * FROM myinfo WHERE myinfo.user_sn = '$sn_user'");
if (mysql_num_rows($info2) == 0) {
echo 'error_sn';
}
$info3 = mysql_query("SELECT * FROM myinfo WHERE myinfo.user_pw = '$user_pw'");
if (mysql_num_rows($info3) == 0) {
echo 'error_pw';
}
我的 ajax 可能会收到三种不同的响应:
$.ajax({
url: "includes/enter.php",
data: {
login_user: $("#login").val(),
sn_user: $("#sn").val(),
user_pw: $("#pw").val()
},
success:function(response)
{
if(response == "error_login")
{
alert("Invalid login!");
}
else if(response == "error_sn")
{
alert("Invalid SN!");
}
else if(response == "error_pw")
{
alert("Invalid password!");
}
else
{
alert("Success!");
}
}
});
正如 Cpt.Kangar00 所说,我使用了"=="(并且已经编辑过(。我的主要问题是我不想使用echo
而不是echo json_encode("error")
您需要使用 POST 或 GET 来发送数据,例如:
$(document).ready(function() {
$.ajax({
type: 'POST',
url: "data.php",
data: {
user_login: $("#user_login").val(),
user_sn: $("#user_sn").val(),
user_pw: $("#user_pw").val(),
},
success:function(response)
{
if(response == "error_login")
{
alert("Invalid login!");
}
else if(response == "error_sn")
{
alert("Invalid SN!");
}
else if(response == "error_pw")
{
alert("Invalid password!");
}
else
{
alert("Success!");
}
}
});
});
然后像这样访问 PHP 中的数据:
$user_login = $_POST['user_login'];
$user_sn = $_POST['user_sn'];
$user_pw = $_POST['user_pw'];
$dbh = new PDO('mysql:host=localhost;dbname=stackoverflow', 'root', '');
$query = $dbh->prepare("SELECT * FROM myinfo WHERE user_login = :user_login");
$query->bindParam(':user_login', $user_login);
$query->execute();
$result = $query->fetchAll(PDO::FETCH_ASSOC);
if(!$result) {
echo json_encode('error_login');
return;
}
$query = $dbh->prepare("SELECT * FROM myinfo WHERE user_sn = :user_sn");
$query->bindParam(':user_sn', $user_sn);
$query->execute();
$result = $query->fetchAll(PDO::FETCH_ASSOC);
if(!$result) {
echo json_encode('error_sn');
return;
}
$query = $dbh->prepare("SELECT * FROM myinfo WHERE user_pw = :user_pw");
$query->bindParam(':user_pw', $user_pw);
$query->execute();
$result = $query->fetchAll(PDO::FETCH_ASSOC);
if(!$result) {
echo json_encode('error_sn');
return;
}
预准备语句是运行数据库查询的一种更安全、更高效的方法。这是一个示例脚本,需要清理,但应该作为您的良好起点。您可以在此处阅读有关PDO和准备好的声明的更多信息 http://php.net/manual/en/pdo.prepare.php。
在应该使用"=="的地方使用"="。
$.ajax({
url: "includes/enter.php",
data: {
login_user: $("#login").val(),
sn_user: $("#sn").val(),
user_pw: $("#pw").val()
},
success:function(response)
{
if(response == "error_login")
{
alert("Invalid login!");
}
else if(response == "error_sn")
{
alert("Invalid SN!");
}
else if(response == "error_pw")
{
alert("Invalid password!");
}
else
{
alert("Success!");
}
}
});