簡體   English   中英

調用Javascript函數並同時執行PHP?

[英]Call Javascript function and execute PHP at the same time?

所以我有一個表格

<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注入中,而是要嘗試使其工作

檢查登錄名后,您可以使用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!";
}

不太確定要在哪里執行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!";
    }
}

這樣的東西應該可以工作,但是您的代碼存在一些安全問題。 我假設您只是在胡鬧和學習。

這就是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,在此類問題上非常有幫助。 謝謝

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM