我现在几个小时都在盯着这段代码。另请阅读本网站上有关此错误的大量建议。但我无法理解为什么标题位置不会重定向我。
**我知道这可能是一个重复的问题,但我没有得到“标题已经发送错误,所以我想它可能会有所不同,因为我尝试了建议的解决方案**
到目前为止我尝试了什么
ob_start();
error_reporting(E_ALL);
ini_set('display_errors', TRUE);
../dashboard.php
但它仍然不起作用,页面只刷新,并且URL保持不变。
这是php代码
<?php
error_reporting(E_ALL);
ini_set('display_errors', TRUE);
ob_start();
include "config.php";
if (isset ($_POST['lemail']) && isset($_POST['lpassword'])) {
$email = $_POST['lemail'];
$password = $_POST['lpassword'];
$email = mysqli_real_escape_string ($connection, $email);
$password = mysqli_real_escape_string ($connection, $password);
// sha256 password hashing
$hashed_password = hash('sha256', $password);
$query = "SELECT * FROM users WHERE userEmail = '{$email}' AND userPassword = '{$hashed_password}'";
$select_user_query = mysqli_query ($connection, $query);
if (!$select_user_query) {
die ("Query Failed". mysqli_error($connection));
}
$count = mysqli_num_rows($select_user_query);
if($count == 1) {
header("Location:http://localhost/honest/dashboard.php");
exit(0);
} else {
echo "Not OK";
}
}
ob_end_flush();
?>
编辑: 该问题被标记为重复,其中different question与我要实现的目标无关。
我试图通过PHP本身而不是通过Javascript重定向页面。
答案 0 :(得分:0)
当你使用ajax请求时,不要在php中重定向,你需要在ajax成功调用中重定向,在它下面显示你可以实现这一点。
<script type="text/javascript">
$('document').ready(function(){
$('form').submit(function(e){
e.preventDefault();
var FormData = $('form').serialize();
$.ajax({
type : 'POST',
data : FormData,
url :'Your-login-Page.php',
datatype : 'json',
encode : true,
success : function(response){
response = JSON.parse(response);
if(response == "ok"){
//login sucess
$('#SuccessDiv').html('Login success');
setTimeout(' window.location.href = "dashboard.php"; ', 6000);
}else{
$('#ErrorDiv').html(response);
}
}
});
});
});
</script>
then your login
<?php
error_reporting(E_ALL);
ini_set('display_errors', TRUE);
ob_start();
$message ='';
include "config.php";
if (isset ($_POST['lemail']) && isset($_POST['lpassword'])) {
$email = $_POST['lemail'];
$password = $_POST['lpassword'];
$email = mysqli_real_escape_string ($connection, $email);
$password = mysqli_real_escape_string ($connection, $password);
// sha256 password hashing
$hashed_password = hash('sha256', $password);
$query = "SELECT * FROM users WHERE userEmail = '{$email}' AND userPassword = '{$hashed_password}'";
$select_user_query = mysqli_query ($connection, $query);
if (!$select_user_query) {
die ("Query Failed". mysqli_error($connection));
}
$count = mysqli_num_rows($select_user_query);
if($count == 1) {
$message = 'ok';
} else {
$message = "username and password does not match";
}
echo json_encode($message);
}
?>
在你的php中,我会建议你使用mysqli准备好的语句或 更好地使用PDO编写的语句,并使用更安全的语句 php提供的密码哈希,
password_hash();
和。{password_verify()
函数。