PHP header()不重定向,只发布重定向页面的HTML

时间:2017-09-20 05:41:48

标签: javascript php jquery html ajax

我确保我没有发送任何客户端数据,我开启了错误报告但没有发生任何事情。

这是一个简单的登录脚本,在验证时有重定向。

    <?php
include_once "database-handler2.php";
require "password.php";

$UserName = $_POST["name"];
$Password = $_POST["pass"];

if(isset($UserName))
{
    $query = "SELECT Password FROM users WHERE Username='$UserName'";
    $hashed_password = mysqli_query($connection, $query);

     while ($row = mysqli_fetch_row($hashed_password))
    {
       $res = $row[0];
    } 


    if(password_verify($Password, $res)) {
       // Show Errors
      error_reporting(E_ALL);
      ini_set('display_errors','On');
      // Redirect
      header('Location:http://example.com/ex/index.php', true);
      die('redirect');
    }
}

我确保其他包含的php没有额外的空格或其他任何内容。使用AJAX,成功函数什么都不做,如果我打开alert()或者debug.log()PHP响应的成功消息(不应该有一个),那么我得到一个打印页面我是尝试重定向到HTML而不会出现任何错误或其他信息。

Javascript代码:

    $('#submitButton').click(function()
{
        var userName = document.getElementById("user").value;
        var pass = document.getElementById("pass").value;
    $.ajax({
        url: '/handlers/login-handler.php',
        type:'POST',
        data:
        {
            name: userName,
            pass: pass
        },
        success: function(msg)
        {
                    alert(msg);
        }               
    });
});

请注意,如果我采取警报(msg);如果我点击按钮没有任何反应。

enter image description here

3 个答案:

答案 0 :(得分:1)

删除这段PHP代码

header('Location:http://example.com/ex/index.php', true);

并在ajax的成功响应中添加以下代码行。

window.location.href="http://example.com/ex/index.php"

如果你是AJAX,那么服务器端重定向将不起作用,你必须使用jquery / javascript重定向。

答案 1 :(得分:0)

您应该从您的php代码返回success类型响应到ajax响应,然后您应该使用window.location JS代码在成功处理后重定向您的页面。

答案 2 :(得分:0)

不要使用javascript / jQuery提交表单,而是使用标准的html表单。您不需要任何javascript来提交表单。

<form method="post" action="/handlers/login-handler.php">
    <label for="user">Username:</label>
    <input type="text" id="user" name="user">
    <label for="pass">Password:</label>
    <input type="text" id="pass" name="pass">
    <input type="submit" value="Submit">
</form>