ajax 登录表单不起作用
ajax login form doesn't work
我正在尝试将用户信息从 mysql 传递到网页,如果用户已登录但无法正常工作。如果我输入错误的电子邮件或密码,它会显示错误消息,但如果凭据没问题,它会执行任何操作...
在 php 文件上:
$sql = "SELECT * FROM users WHERE email='$l_email' AND password='$l_password'";
$query = mysql_query($sql) or die ('Error: ' . mysql_error());
$num_rows = mysql_num_rows($query);
if($num_rows < 1)
{
echo "You have entered a wrong email or password!";
}
else {
$memberInfo = array();
while( $row = mysql_fetch_array( $query ) )
{
$memberInfo[] = $row;
}
return $memberInfo;
echo json_encode( $memberInfo );
//echo "1";
}
在 js 文件上:
$.post("./includes/checkOut.php",{ l_email1: l_email, l_password1: l_password },
function(data) {
if(data=='1')
$("#checkOut_form")[0].reset();
$("#login_returnmessage").html("");
$("#memberInfo").hide("");
var memberInfo = jQuery.parseJSON(memberInfo);
for( var i in memberInfo )
{
var f_name = memberInfo[i].f_name;
var l_name = memberInfo[i].l_name;
var phone = memberInfo[i].phone;
}
$("#loggedinInfo").show("");
$('#_f_name').val(f_name);
$('#_l_name').val(l_name);
$('#_email').val(l_email);
$('#_phone').val(phone);
}
$("#login_returnmessage").html(data);
});
如果您在函数外部使用 return
,那么它会在该点终止脚本。这正是您在这里所做的:
return $memberInfo;
echo json_encode( $memberInfo );
//echo "1";
您需要删除 return
语句。
您还应该在响应中添加 Content-type:
header 以告诉浏览器期望 JSON:
header('Content-type:application/json');
echo json_encode( $memberInfo );
您的 Javascript 代码正在检查您未发送的值 1
的响应,因此更新显示的代码将不会执行。
最后:
- 不要以未加密的方式存储密码 - 使用
password_hash()
- 不要使用
mysql
,因为它已被弃用 - 使用 mysqli
或 PDO
- 确保在将输入传递到数据库之前对输入进行转义(或者更好的是,使用准备好的语句(
mysql_*()
不支持)。
我正在尝试将用户信息从 mysql 传递到网页,如果用户已登录但无法正常工作。如果我输入错误的电子邮件或密码,它会显示错误消息,但如果凭据没问题,它会执行任何操作...
在 php 文件上:
$sql = "SELECT * FROM users WHERE email='$l_email' AND password='$l_password'";
$query = mysql_query($sql) or die ('Error: ' . mysql_error());
$num_rows = mysql_num_rows($query);
if($num_rows < 1)
{
echo "You have entered a wrong email or password!";
}
else {
$memberInfo = array();
while( $row = mysql_fetch_array( $query ) )
{
$memberInfo[] = $row;
}
return $memberInfo;
echo json_encode( $memberInfo );
//echo "1";
}
在 js 文件上:
$.post("./includes/checkOut.php",{ l_email1: l_email, l_password1: l_password },
function(data) {
if(data=='1')
$("#checkOut_form")[0].reset();
$("#login_returnmessage").html("");
$("#memberInfo").hide("");
var memberInfo = jQuery.parseJSON(memberInfo);
for( var i in memberInfo )
{
var f_name = memberInfo[i].f_name;
var l_name = memberInfo[i].l_name;
var phone = memberInfo[i].phone;
}
$("#loggedinInfo").show("");
$('#_f_name').val(f_name);
$('#_l_name').val(l_name);
$('#_email').val(l_email);
$('#_phone').val(phone);
}
$("#login_returnmessage").html(data);
});
如果您在函数外部使用 return
,那么它会在该点终止脚本。这正是您在这里所做的:
return $memberInfo;
echo json_encode( $memberInfo );
//echo "1";
您需要删除 return
语句。
您还应该在响应中添加 Content-type:
header 以告诉浏览器期望 JSON:
header('Content-type:application/json');
echo json_encode( $memberInfo );
您的 Javascript 代码正在检查您未发送的值 1
的响应,因此更新显示的代码将不会执行。
最后:
- 不要以未加密的方式存储密码 - 使用
password_hash()
- 不要使用
mysql
,因为它已被弃用 - 使用mysqli
或PDO
- 确保在将输入传递到数据库之前对输入进行转义(或者更好的是,使用准备好的语句(
mysql_*()
不支持)。