javascript - 验证表单后的 JQuery Ajax submitHandler()
问题描述
我使用 JQuery 库,并在我的表单验证时尝试传递 ajax submitHandler
。
我正在检查帐户信息是否正确。但是我提出了一个问题,在我在 Ajax 中成功函数的情况下,如果数据不等于零,我希望加载表单。因此,如果我输入了错误的密码,我的情况会很好,它会检测到零。但是,如果我输入了正确的密码,我的表单会加载并将我重定向到我的主页,而不是用户个人资料页面。PHP 会话甚至没有在其他地方创建,就好像它被忽略了一样。
查询:
submitHandler: function (form) {
$.ajax({
type: "POST",
url: "App/Actions/PlayerCheckAuthentication.php",
data: $("form[name='auth']").serialize(),
success: function (data) {
if (data == 0) {
console.log(data)
$(".input-container").eq(5).append("<label class='box gray b_error'>Password incorrect.</label>");
$(":input[name='password']").addClass("red");
} else {
form.submit();
}
}
});
return false;
},
PHP Ajax 调用:
<?php
require '../../vendor/autoload.php';
use App\Models\AuthManager as Auth;
use App\Config;
$Auth = new Auth();
$username = $_POST['username'];
$password = $_POST['password'];
if (isset($username) && isset($password)) {
if ($Auth->auth($username, $password)) {
echo "true";
header("Location: " . Config::APP_URL . "/me");
} else {
echo "false";
}
}
PHP 函数
public function auth($username, $password)
{
$array = Model::getDB()->get("users", "*", ["username" => $username]);
$count = Model::getDB()->count("users", ["username" => $username]);
if ($count > 0) {
if (password_verify($password, $array['password'])) {
$_SESSION['user'] = array();
foreach ($array as $user => $key) {
//unset($_SESSION['user']['password']);
$_SESSION['user'][$user] = $key;
}
return true;
} else {
return false;
}
}
}
解决方案
推荐阅读
- javascript - 从特定的第 3 层嵌套 JSON 制表符属性中过滤整个表
- batch-file - curl 没有登录到路由器
- c++ - 过早释放 Windows GDI 对象会导致问题吗?
- python-3.x - 检查列表中的第 1、2 和 3 个元素是否为整数 Python 3
- php - Woocommerce webhook 响应 200 消息 Rest API 不可用
- python - 你如何在 tkinter 中制作字体对话框?
- java - Flink OutputTag 可以复用吗?
- python-3.x - 对于这种特殊情况,如何使用地理编码获得公司的正确位置?(Python、谷歌 API)
- python - 如何添加多个熊猫数据框的每个条目。Python
- javascript - 带有 Stripe CardElement 的表单的返回值未定义 React Axios