Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/286.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
Javascript 检查表单是否已在php中通过ajax提交_Javascript_Php - Fatal编程技术网

Javascript 检查表单是否已在php中通过ajax提交

Javascript 检查表单是否已在php中通过ajax提交,javascript,php,Javascript,Php,我有一个使用javascript验证的登录表单,然后发送到php文件进行进一步处理。表单通过ajax提交 目前,我在php文件中有一个if语句,用于检查表单是否已提交,问题是这个if语句的计算结果从来都不是true。因此,我的if语句中的php代码永远不会运行。当通过ajax发送请求时,将调用.onload事件,而不调用php文件中的if语句 问题 一旦表单通过ajax提交到php文件,我如何在php文件中检测到表单已通过javascript提交 这是我的php代码 <?php

我有一个使用
javascript
验证的登录表单,然后发送到
php
文件进行进一步处理。表单通过
ajax
提交

目前,我在
php
文件中有一个
if语句
,用于检查表单是否已提交,问题是这个
if语句
的计算结果从来都不是
true
。因此,我的
if语句中的
php
代码永远不会运行。当通过
ajax
发送请求时,将调用
.onload
事件,而不调用php文件中的
if语句

问题

一旦表单通过
ajax
提交到
php
文件,我如何在
php
文件中检测到表单已通过javascript提交

这是我的php代码

<?php

    require 'DbConnection.php';

    // if form is submitted
    if(isset($_POST['login-btn'])) {
        $username = $_POST['username-field'];
        $password = $_POST['password-field'];
        echo '<script>alert(\'form submitted\')</script>';
        verifyLoginCredentials($username, $password);
    } else {
        echo '<script>alert(\'form not submitted\')</script>';
    }

    // verify admin login credentials
    function verifyLoginCredentials($username, $password) {
        global $dbConnect;
        $query = 'SELECT full_name, username, password FROM admins WHERE username = ?';
        $statement = $dbConnect->prepare($query);

        if($statement) {
            $statement->bind_param('s', $username);
            $statement->execute();
            $resultSet = $statement->get_result();

            // since there will be only one row returned at max, no need of a loop
            $row = $resultSet->fetch_assoc();

            if($row != null) {
                $adminFullName = $row['full_name'];
                $adminUsername = $row['username'];
                $adminPassword = $row['password'];

                // if username/password is correct start session and store
                // username, password, full name in the session
                if($username === $adminUsername && password_verify($password, $adminPassword)) {
                    session_start();
                    $_SESSION['current_admin_fullname'] = $adminFullName;
                    $_SESSION['current_admin_username'] = $adminUsername;
                    $_SESSION['current_admin_password'] = $adminPassword;
                }
                else { // if username/password combination is incorrect
                    echo 'Incorrect Username/Password Combination';
                }
            } else { // if username doesn't exists in the database
                echo 'Entered username isn\'t registered';
            }
        } else {
            echo 'Error while preparing sql query';
        }
    }

?>

无法保证知道表单是通过ajax提交的

通常情况下,这是通过头来完成的,在我们的例子中,
HTTP\u X\u REQUESTED\u带有
,可以通过全局
$\u服务器
变量来检索

请注意,标题很容易被欺骗

您可以这样检查:

if(isset($_SERVER['HTTP_X_REQUESTED_WITH']) && !empty($_SERVER['HTTP_X_REQUESTED_WITH']) && strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) == 'xmlhttprequest')
{
    // code here
}

这里有几个链接可以查看:


仅供参考,感谢您的回复,但这对我不起作用。实际上,我正在尝试通过
javascript
验证表单,如果已验证,请将表单提交到
php
文件。一旦
php
代码执行,我想检查是否有任何错误,如果有,我调用一个显示错误消息的javascript函数。如果我这样做的方式不安全,那么我如何才能以安全的方式来做呢?@Nick一旦
php
代码执行,我想检查是否有任何错误,您到底在寻找什么错误?表单验证错误?还是php执行中的错误?
if(isset($_SERVER['HTTP_X_REQUESTED_WITH']) && !empty($_SERVER['HTTP_X_REQUESTED_WITH']) && strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) == 'xmlhttprequest')
{
    // code here
}