我添加header(location: homepage.php)
后,我的模态没有显示,但如果移除header
,模态工作正常。我怎么可能这样做?我也尝试使用echo进行警报并发生同样的事情,所以我不知道我的代码有什么问题。我希望有人能帮助我,谢谢你!这是我的代码
的login.php
if(isset($_POST['submit']))
{
$email = $_POST['email'];
$password = $_POST['password'];
$object = new Login();
$object->getCredentials($email, $password);
}
?>
<form action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]); ?>" method="POST">
<div>
<label><b>EMAIL ADDRESS</b></label>
<input type="email" name="email" placeholder="Email"></input>
</div>
<div>
<label><b>PASSWORD</b></label>
<input type="password" name="password" placeholder="Password"></input>
</div>
<button type="submit" id="submit" name="submit">Login</button>
</form>
processlogin.php
<?php
include_once 'db.php';
class Login
{
public function getCredentials($email, $password)
{
$email = $email;
$password = $password;
$object = new Db();
$stmt = $object->connect()->prepare("SELECT * FROM user WHERE email=?");
$stmt->execute([$email]);
$stmtFetch = $stmt->fetch();
if($stmt->rowCount()==1 && $stmtFetch['email'] == $email && $stmtFetch['password'] == $password)
{
echo "<script>$('#loginsuccess').modal('show')</script>";
header("location: homepage.php");
}
}
}
答案 0 :(得分:2)
我发现了一些你可能感兴趣的东西:
Interview Question: Can we have an echo before header?
问题是我们在开始发送输出后无法发送标头,如果您在echo
之前发送标头,则echo
将不会被执行。
试试这个:
解决方案1 :(来自上面的链接)。
ob_start();
echo "<script>$('#loginsuccess').modal('show')</script>";
header("location: homepage.php");
ob_end_flush();
解决方案2:使用javascript重定向代替标题函数。
echo "<script>
$('#loginsuccess').modal('show');
window.location.replace('http://fullpath-homepage.php');
</script>";
附加说明:
您也可以使用:
window.location.href="http://example.com";
window.location.assign("http://example.com");
replace
方法导航到网址而不向历史记录添加新记录。
答案 1 :(得分:1)
更新:找到答案
我使用了Yeti82的答案,这就是我所做的延迟,以显示成功模式,然后指向下一页。
echo "<script>
$('#loginsuccess').modal('show');
setTimeout(function() {window.location.href=\"homepage.php\";}, 1000);
</script>";