【发布时间】:2014-10-19 10:23:41
【问题描述】:
我有一个接受用户电子邮件和密码的表单,还有一个创建 JSON 对象并使用 AJAX 将封装密码和电子邮件的对象发送到服务器的脚本:
$(document).ready(function(){
var email, password;
$('#submit').click(function(e){
e.preventDefault();
email = $('#email').val();
password = $('#password').val();
$memberData = {
'email' : email,
'password':password
};
$memberData = JSON.stringify($memberData);
login();
});
function login()
{
$.ajax({
url: 'scripts/processLogin.php',
data: 'json='+ $memberData,
success: function(result){
var r = JSON.parse(result);
alert(r.result);
}
});
}
});
Then in my processLogin.php I have:
include 'dbConnect.php';
$jsonS = filter_input(INPUT_GET, 'json'); //get object sent to file
$memberData = json_decode(stripslashes($jsonS)); //convert JSON object to string
$email = mysql_real_escape_string($memberData->email);
$password = mysql_real_escape_string($memberData->password);
$query = mysql_query("SELECT * FROM `members` WHERE `email` = '$email' AND `password` = '$password'");
$rows = mysql_num_rows($query);
if($rows > 0){
$_SESSION['email'] = $email;
$result = "Successfully Logged in";
} else {
$result = "Invalid Login Credentials";
}
$result = array("result"=>$result);
echo json_encode($result);
这里是 dbConnect.php:
<?php
$dbLocation = "localhost";
$dbName="database";
$dbUsername="root";
$dbPassword = "root";
$connect = mysqli_connect($dbLocation,$dbUsername,$dbPassword,$dbName)
or die("cannot connect");
mysqli_select_db($connect,$dbName)
or die("cannot select DB");
if (mysqli_connect_errno()) {
echo "Failed to connect to MySQL: " . mysqli_connect_error();
}
?>
当我运行它时,它根本不会发出警报。我尝试通过在 proccessLogin.php (菜鸟方式)中逐行添加来进行调试,并将普通字符串分配给 $result(测试缘故),它会发出警报,直到我添加:$rows = mysql_num_rows($query),我尝试使用 mysqli_num_rows () 但它也没有工作。我知道在我的 dbConnect 中我使用 mysqli,但是如果我将它与我的查询一起使用它就不起作用,如果我使用 mysqli_real_escape_string() 它也不起作用 任何帮助将不胜感激。 提前谢谢你。
【问题讨论】:
-
mysqli_connect,mysql_query你真正使用什么库? -
您知道将用户数据从 javascript 发送到 php 是不可靠的。人们可以关闭他们的 javascript,您的完整登录/注册将失败