我正在使用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")
答案 0 :(得分:1)
您需要使用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。
答案 1 :(得分:0)
你使用“=”,你应该使用“==”。
$.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!");
}
}
});