我正在编写PHP代码来验证mysql数据库中是否存在用户名和密码。当我点击登录页面(index.html)上的登录按钮时,会调用此php。我的PHP代码如下:
<?php
require_once 'dbconfig.php';
// Unescape the string values in the JSON array
$logindata = stripcslashes($_POST['pLogData']);
// Decode the JSON array
$logindata = json_decode($logindata,TRUE);
// now $tableData can be accessed like a PHP array
$user_email = $logindata['user'];
$user_password = $logindata['pass'];
//First lets get the username and password from the user
$query = $db_conn->prepare("SELECT * FROM tblUsers WHERE email=:user_email LIMIT 1");
$query->execute(array(':user_email'=>$user_email));
$userRow=$query->fetch(PDO::FETCH_ASSOC);
if($query->rowCount() > 0) {
if(password_verify($upass, $userRow['pass'])) {
$_SESSION['user_session'] = $userRow['userid'];
if($userRow['userid'] == 1) {
header("Location: adminPanel.html");
} else {
header("Location: main_dashboard.html");
}
// return true;
} else {
header("Location: index.html");
// return false;
}
}
?>
ajax调用代码是:
function login(username, passwd) {
var loginData = {
'user': username,
'pass': passwd
};
loginData = $.toJSON(loginData);
$.ajax({
type: "POST",
url: "loginValidate.php",
data: "pLogData=" + loginData,
success: function(msg) {
console.log(msg);
// return value stored in msg variable
}
});
}
除了在php中设置的导航没有发生外,它工作正常。我无法弄清楚错误在哪里。它必须导航到的整个html将被打印到控制台中。
任何帮助都将不胜感激。
答案 0 :(得分:2)
通过ajax它将无法正常工作。返回文件名并在javascript中使用window.location=filename
。或提交表格,如果
uncussessfull重定向到main_dashboard.html(the desired page)
上的当前其他内容。
如果您返回文件名,则可以执行以下操作:
success: function(filename) {
window.location=filename;
}
此删除标头位置,并使用echo filename
,例如main_dashboard.html或其他。
答案 1 :(得分:0)
感谢您提出的宝贵建议。我设法解决了这个问题。工作代码如下:
if($query->rowCount() > 0) {
$upass = $userRow['pass'];
// if(password_verify($user_password, $userRow['pass'])) {
if($user_password == $upass) {
//echo "Check verified";
$_SESSION['user_session'] = $userRow['userid'];
if($userRow['userid'] == 1) {
//header("Location: http://localhost:90/codebase-test/adminPanel.html");
//return $userRow['userid'];
$filename = "adminPanel.html";
//return $filename;
}
else{
$filename = "main_dashboard.html";
//return $filename;
}
echo $filename;
// return true;
}
else {
echo "index.html";
//echo $filename;
//return false;
}
}
我只发布了我改变的位。它现在正在运作。
修改强> 我也对ajax调用进行了一些小改动。代码如下:
$.ajax({
type: "POST",
url: "loginValidate.php",
data: "pLogData=" + loginData,
success: function(filename){
window.location = filename;
}
});