消息未显示

时间:2017-02-08 09:51:10

标签: javascript php html

我的问题是,当密码和用户名正确时,不会显示该消息。然后我的页面继续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>";
       }
    }
 ?>

3 个答案:

答案 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");

我希望这会对你有所帮助!