我的问题是,当密码和用户名正确时,不会显示该消息。然后我的页面继续foredeck.php。这部分很好,但为什么我的消息在更改网页之前不显示?如果密码或unsername不正确,则会显示第二条消息。我遇到第一个问题: echo“alert('ConnexionRéussite')”;
<?php
$msg = '';
if (isset($_POST['login']) && !empty($_POST['username'])
&& !empty($_POST['password'])) {
if ($_POST['username'] == 'foredeck' &&
$_POST['password'] == 'foredeck1') {
$_SESSION['valid'] = true;
$_SESSION['timeout'] = time();
$_SESSION['username'] = 'tutorialspoint';
$msg ='Connexion Réussite';
echo $msg= "<script type='text/javascript'>alert($msg)</script>";
header("location: foredeck.php");
}else {
$msg='Identifiant ou Mot de Passe incorrecte';
$msg = "<script type='text/javascript'>alert('$msg')</script>";
}
}
?>
答案 0 :(得分:2)
PHP header(location)
在alert()
之前执行,这是JS,因此不显示警报并重定向页面。因此,在window.location
中使用<script>
(JS中的重定向代码)而不是header(location)
<?php
$msg = '';
if (isset($_POST['login']) && !empty($_POST['username'])
&& !empty($_POST['password'])) {
if ($_POST['username'] == 'foredeck' &&
$_POST['password'] == 'foredeck1') {
$_SESSION['valid'] = true;
$_SESSION['timeout'] = time();
$_SESSION['username'] = 'tutorialspoint';
echo "<script type='text/javascript'>alert('Connexion Réussite');
window.location.href='foredeck.php';
</script>";
}else {
$msg = "<script type='text/javascript'>alert('Identifiant ou Mot de Passe incorrecte')</script>";
}
}
?>
警告将首先显示,并在按下确定后重定向..
答案 1 :(得分:1)
基本上,Javascript
在浏览器上运行,PHP
在服务器上运行,因此代码会按照您的预期一步一步地运行。这里的PHP代码在javascript代码之前运行,这是你在JS代码运行之前被重定向的原因。
您可以通过以下方式解决此问题:
location: foredeck.php
)。window.location = 'foredeck.php';
放入javascript。这将首先使您的警报工作,然后将其重定向到前甲板。
答案 2 :(得分:0)
问题是因为header()
会立即执行重定向。使用带有这样的计时器的标题刷新:
header("refresh:5; url=wherever.php");
我希望这会对你有所帮助!