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
}