【问题标题】:Call Javascript function and execute PHP at the same time?调用 Javascript 函数并同时执行 PHP?
【发布时间】:2016-12-08 06:22:01
【问题描述】:

所以我有一个表格

<form id="login_form" method="post" action="login.php">
    <input type="text" name="email">
    <input type="password" name="pass">
    <input type="submit" name="submit" value="Log in" onclick="submitFunction()">
</form>

提交表单时,我正在检查用户名和密码是否正确

if(isset($_POST['submit'])) {
    $email = $_POST['email'];
    $pass = $_POST['pass'];

    $sql = "SELECT email,password FROM user_details WHERE email='$email' AND password='$pass'";
    $result = $conn->query($sql);

    if ($result->num_rows > 0) {
        $_SESSION["email"] = $_POST['email'];
    }
    else {
        echo "Incorrect username or password. Please try again!";
    }
}

但我也想加载一个新页面,我正在尝试通过 javascript 来完成

function submitFunction()
{
    window.location.href = "new url";
}

我尝试用一​​个按钮替换提交按钮,但是我无法让我的 php 执行,因为我不能使用 if(isset($_POST['submit'])),但是如果我使用提交按钮那么我不知道如何调用我的javascript函数,因为我不能使用onclick可以吗?任何帮助将不胜感激:)

我也知道我不应该只将密码存储在我的数据库和 sql 注入以及所有这些中,但我只是想尝试让它工作

【问题讨论】:

标签: javascript php html forms


【解决方案1】:

您可以在检查登录后使用 PHP 加载新页面。除非你有其他原因需要使用 JavaScript,否则我认为用 PHP 更有意义,因为根据登录是否成功,你会想做不同的事情。

if ($result->num_rows > 0) {
    $_SESSION["email"] = $_POST['email'];
    header('Location: new url');
    exit;
}
else {      
    echo "Incorrect username or password. Please try again!";
}

【讨论】:

    【解决方案2】:

    不太确定你想在哪里执行 JS 代码,像这样:

    if(isset($_POST['submit'])) {
        $email = $_POST['email'];
        $pass = $_POST['pass'];
    
        $sql = "SELECT email,password FROM user_details WHERE email='$email' AND password='$pass'";
        $result = $conn->query($sql);
    
        if ($result->num_rows > 0) {
            $_SESSION["email"] = $_POST['email'];
    
            // Output JsvaScript code here?
            echo "
            <script>
            function submitFunction()
            {
                window.location.href = \"new url\";
            }
            </script>
            ";
        }
        else {
            echo "Incorrect username or password. Please try again!";
        }
    }
    

    类似的方法应该可以,但是您的代码存在一些安全问题。我假设你只是在胡闹和学习。

    【讨论】:

      【解决方案3】:

      这就是 Ajax 的用武之地。我将使用 AJAX 和 Jquery 来执行此操作 不要忘记包括 Jquery。

      $("#check").click(function(){
      
          $.ajax({
              type: "POST",
              url: "file.php",
              data: {email: $("#email").val(), pass: $("#pass").val()},
               beforeSend: function()
              { 
                  $('#check').attr('disabled',true);
              },
              success :  function(response)
              {      
                 if(response=="correct"){
                   setTimeout('window.location.href = "new url"',1000);
                 }else{
      setTimeout('window.location.href = "bad login url"',1000);
                  
                 }
              }
      
      
          });
          return false;
      
      });

      在你的 PHP 代码 file.php 中使用这个

      if(isset($_POST['submit'])) {
          $email = $_POST['email'];
          $pass = $_POST['pass'];
      
          $sql = "SELECT email,password FROM user_details WHERE email='$email' AND password='$pass'";
          $result = $conn->query($sql);
      
          if ($result->num_rows > 0) {
              $_SESSION["email"] = $_POST['email'];
      
             echo "correct";
          }
          else {
              echo "Incorrect username or password. Please try again!";
          }
      }

      对于 HTML

      <form id="login_form" method="post">
          <input type="text" id="email" name="email">
          <input type="password" id="pass" name="pass">
          <input type="submit" name="submit" value="Log in" id="check">
      </form>

      希望这些信息对您有所帮助 请学习 Ajax,它对此类问题非常有帮助。谢谢

      【讨论】:

        猜你喜欢
        • 2013-08-18
        • 1970-01-01
        • 2021-07-04
        • 2011-07-18
        • 1970-01-01
        • 2012-05-29
        • 1970-01-01
        • 1970-01-01
        • 2020-05-05
        相关资源
        最近更新 更多