【问题标题】:PHP alert messagePHP 警报消息
【发布时间】:2013-07-18 19:28:39
【问题描述】:

我知道每个人都会说的第一件事是这已经被发布了数百次;但是,我已经尝试了人们建议的所有不同方法,但仍然没有运气......如果登录失败但由于某种原因不想出现该消息,我正在尝试弹出一条警报消息。到目前为止,这是我所拥有的:

if($conn) {
    $result=sqlsrv_query($conn, "SELECT * FROM Operator
    WHERE Username='{$_POST['login']}'");
    $pass=sqlsrv_fetch_array($result);
    if($pass["Password"] === $_POST['password']) {
        session_start();
        $_SESSION['loggedin']=true;
        header("Location: home.php");
        exit;
    }
    else {
        header("Location: login.php");
        echo '<script type="text/javascript">';
        echo 'alert("Password Invalid!")';
        echo '</script>';
    }
}
sqlsrv_close($conn);

php 工作正常,但由于某种原因我无法让 javascript 工作。有什么想法吗?

【问题讨论】:

  • 你能告诉我们不工作的javascript吗?此外,在浏览器开发控制台中打开您的网络选项卡。你的 ajax 有没有通过?
  • 右键单击并检查您的文档,
  • 如果您使用Location 设置重定向器,该脚本将永远不会出现。
  • @zladuric 来自他的行标题(“位置:login.php”);很明显这不是 ajax 并且他正在重定向
  • @zladuric 我只有一个部分在使用 java...我正在尝试将 javascript 包含在 php 代码中。

标签: php javascript database alert


【解决方案1】:

在您的代码中header("Location: login.php"); 在您的 js 代码之前存在,因此它永远不会执行重定向到登录页面的 js 代码删除它并尝试。

【讨论】:

  • 当我删除标题时,警报有效,但我如何仍然重定向到出现警报消息的登录页面?
  • @Llama 尝试在“login.php”重定向的末尾添加一个查询字符串,使其看起来像“login.php?status=error”。然后你可以添加一个条件来检查 $_GET["status"] 并在那里输出警报。
【解决方案2】:

您在标头之后的代码没有运行,也许可以尝试设置一个会话变量并在 login.php 中检查该变量。然后,您可以从那里调用警报,或者只在页面上显示一条简单的消息。

【讨论】:

    【解决方案3】:

    我想,问题就在这里。您正在重定向警报消息之前的页面

    header("Location: login.php"); /* Redirect browser */
    

    尝试删除它,或者让它在几秒钟后重定向,就像这样

    header( "refresh:5;url=login.php" ); //redirect after 5 seconds
    

    或者您提示用户单击以转到下一页的对话框。删除 header() tho

    <script type="text/javascript">
    <!--
       var retVal = confirm("Login FAILED! Do you want to continue ?");
       if( retVal == true ){
          window.location.href = "login.php";
          return true;
       }else{
          alert("User does not want to continue!");
          return false;
       }
    //-->
    </script>
    

    【讨论】:

    • 我已经尝试将它放在标题之前,但仍然没有成功。
    • @Llama 如果将 header() 放在 javascript 之后,请确保 header() 中有一个计时器
    • 如果你把计时器放在那里,它会跳过整个登录检查过程并在 5 秒后直接进入主页 =/
    • 这段代码在什么文件里?你想重定向到同一个文件还是不同的文件?
    • 这是一个 submit.php 文件,它从用户提供的 login.php 中获取信息并将其与数据库文件进行比较。如果登录失败,我想再给用户一次登录的机会,但会显示警告消息。
    【解决方案4】:

    警报后面缺少一个分号:

    if($conn) {
        $result=sqlsrv_query($conn, "SELECT * FROM Operator
        WHERE Username='{$_POST['login']}'");
        $pass=sqlsrv_fetch_array($result);
        if($pass["Password"] === $_POST['password']) {
            session_start();
            $_SESSION['loggedin']=true;
            header("Location: home.php");
            exit;
        }
        else {
            header("Location: login.php");
            echo '<script type="text/javascript">';
            echo 'alert("Password Invalid!");';
            echo '</script>';
        }
    }
    sqlsrv_close($conn);
    

    你没有检查 javscript 控制台吗?

    编辑:对不起,我的错,分号当然不是必需的。

    我在我的服务器上测试了你的 php 代码,它仍然可以正常工作!

    【讨论】:

      【解决方案5】:

      使用此代码

      echo '<script>';
      echo 'alert("Password Invalid!");';
      echo 'location.href="login.php"';
      echo '</script>';
      

      而不是

      header("Location: login.php");
      echo '<script type="text/javascript">';
      echo 'alert("Password Invalid!");';
      echo '</script>';
      

      谢谢。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2022-11-16
        • 2020-10-09
        • 1970-01-01
        • 1970-01-01
        • 2017-03-15
        • 1970-01-01
        • 2012-08-22
        • 1970-01-01
        相关资源
        最近更新 更多