PHP登录页面重定向不会加载新页面

时间:2018-03-28 03:08:36

标签: php html

如果用户名和密码正确,我有这个php脚本将用户重定向到主页面的html文件。但是,执行此代码时,html文件仅显示为新资源,但页面不会加载。我不确定如何在使用标题函数时加载页面。



<?php
$password2 = $_POST['password1'];
$username2 = $_POST['username1'];
$connection = mysqli_connect("localhost", "root", "pass", "database") or die("Unable to connect to MySQL");  
$query = mysqli_query($connection, "SELECT * FROM users where username = '$username2' AND password = '$password2'") or die(mysqli_error($connection));
$row = mysqli_fetch_array($query, MYSQLI_BOTH) or die(mysqli_error($connection));
if(!empty($row['username']) AND !empty($row['password'])) {
    session_start();
    $_SESSION['username'] = $username2;
    header('Location: http://localhost/application/site.html');
    echo "Successful Login"; 
    exit;
}
else{
    echo "The password or username you have entered is not valid";
}
mysqli_close($connection);

?>
&#13;
&#13;
&#13;

2 个答案:

答案 0 :(得分:0)

根据你的评论:

  

在Safari的Javascript控制台的资源选项卡下,   运行脚本时会弹出site.html但页面本身不会弹出   加载。我使用ajax提交数据

在ajax请求中发送时,位置标题不符合

您应该更新提交ajax请求的代码,以便在成功验证时重定向页面。

例如,您想要执行以下操作(在jQuery中):

$.post('/path/to/login.php', {username: '...', password: '...'})
     .success(function(response){  
       if (response.status == 403) {
          // show error message to user
       } else {
          window.location = 'http://localhost/application/site.html';
       }
    })
    .fail(function (jqXHR) {
        // show error message to user
    });

您希望从php脚本返回身份验证状态,如下所示:

<?php
$password2 = $_POST['password1'];
$username2 = $_POST['username1'];
$connection = mysqli_connect("localhost", "root", "pass", "database") or die("Unable to connect to MySQL");  
$query = mysqli_query($connection, "SELECT * FROM users where username = '$username2' AND password = '$password2'") or die(mysqli_error($connection));
$row = mysqli_fetch_array($query, MYSQLI_BOTH) or die(mysqli_error($connection));
if(!empty($row['username']) AND !empty($row['password'])) {
    session_start();
    $_SESSION['username'] = $username2;
    http_response_code(200);
    echo "Successful Login";
    exit;
}
else{
    http_response_code(403);
    echo "The password or username you have entered is not valid";
}
mysqli_close($connection);

?>

答案 1 :(得分:-1)

添加页面顶部

ob_start();

在页面底部添加

ob_end_flush()函数;

php中的标头始终在任何输出发生之前运行。 所以打开输出缓冲

相关问题