如果用户名和密码正确,我有这个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;
答案 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中的标头始终在任何输出发生之前运行。 所以打开输出缓冲