Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用外部php文件提交表单而不离开main index.php?_Php_Html - Fatal编程技术网

如何使用外部php文件提交表单而不离开main index.php?

如何使用外部php文件提交表单而不离开main index.php?,php,html,Php,Html,下面是我的html表单代码: <form id="login_form" action="login.php" method="POST"> <h2>Already a member? Sign in!</h2> <p>Username: <input type="text" name="username"></p> <p>Password: <input type="passwor

下面是我的html表单代码:

<form id="login_form" action="login.php" method="POST">
    <h2>Already a member? Sign in!</h2>
    <p>Username: <input type="text" name="username"></p>
    <p>Password: <input type="password" name="password"></p>
    <input type="submit" name="login_submit" value="Sign In">
</form>

已经是会员了?登录!
用户名:

密码:

我在页面顶部包含了外部“login.php”文件,如下所示:

<?php

    include 'config.php';

    if (isset($_POST["login_submit"]))
    {

        $username = $_POST["username"];
        $password = $_POST["password"];

        $query = "SELECT username, hashed_password FROM users WHERE username = '$username';";

        $result = mysqli_query($conn, $query);
        $row = mysqli_fetch_assoc($result);
        $rows_num = mysqli_num_rows($result);

        if ($rows_num == 0) {
            echo "This user doesn't exist!";
        }
        else {
            $password_match = password_verify($password, $row['hashed_password']);
            if (!$password_match) {
                echo "The passwords do not match.";
            }
            else {
                header("Location: index.php");
                echo "Welcome ".$username."!";
            }
        }
    }

?>

如果我正确理解了您的问题,您希望在不离开您所在页面的情况下提交表单。要做到这一点,您可以使用javascript发出xhr请求,或者更常见地将其视为ajax请求

jQuery不需要这样做,但它使它变得更容易


你的代码看起来很好,只是缺少了关键字来搜索是什么让神奇发生的。这种技术称为
Ajax请求
。做一个谷歌搜索,你会发现成千上万的例子。这不是PHP自己能做到的。您需要使用JavaScript捕获表单submit并对php脚本执行ajax请求。您不能使用
this
。您应该让脚本知道它的上下文:
context:this
,然后才能使用
this
好捕获!更新答案。虽然我似乎完全错过了OP想要做的事情,但我认为这个答案不再有用了:\
$( "#login_form" ).submit(function( event ) {
  event.preventDefault();
  var formdata = $( this ).serializeArray();
  $.ajax({
    type:"POST",
    url:"login.php",
    data: formdata,
    success: function() {
      // do something?
    }
  });
});