标题位置不会重定向

时间:2017-02-27 09:01:44

标签: php

我现在几个小时都在盯着这段代码。另请阅读本网站上有关此错误的大量建议。但我无法理解为什么标题位置不会重定向我。

**我知道这可能是一个重复的问题,但我没有得到“标题已经发送错误,所以我想它可能会有所不同,因为我尝试了建议的解决方案**

到目前为止我尝试了什么

  • ob_start();
  • error_reporting(E_ALL);
  • ini_set('display_errors', TRUE);
  • 将文件更改为UTF-8-BOM
  • 删除文件&再创一次
  • 用绝对网址
  • 替换../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重定向页面。

1 个答案:

答案 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()函数。