Javascript 如何修复代码以确保仅当电子邮件与前一封不同时,它才能提取&;将提取的数据保存到let";emailInput";?
这是我的JS语言,它检查用户键入的电子邮件地址是否具有常规电子邮件地址的结构,以及它是否与以前的电子邮件地址不同(如果用户以前键入了它们),并将fetch发送到PHP以检查电子邮件是否在DB中:Javascript 如何修复代码以确保仅当电子邮件与前一封不同时,它才能提取&;将提取的数据保存到let";emailInput";?,javascript,php,Javascript,Php,这是我的JS语言,它检查用户键入的电子邮件地址是否具有常规电子邮件地址的结构,以及它是否与以前的电子邮件地址不同(如果用户以前键入了它们),并将fetch发送到PHP以检查电子邮件是否在DB中: let emailInput = {}; function checkEmail(event) { const body = {email: event.target.value}; if (emailInput !== body.email && body.emai
let emailInput = {};
function checkEmail(event) {
const body = {email: event.target.value};
if (emailInput !== body.email && body.email.match(/@.+\..+$/)) {
emailInput = body.email;
fetch("http://localhost/BlueFriended_latest/availabilityCheck.php", {
body: JSON.stringify(body),
method: "POST"
})
.then((response) => {
response.json();
})
.catch(console.error);
}
}
下面是我的PHP语言,用于接收fetch并检查数据库中是否存在电子邮件地址,以及根据状态发回(true或false):
<?php
require_once('./classes/DB.php'); // including connection with database 'BlueFriended'
/* $emailData = json_decode(file_get_contents("php://input"), true)["email"]; */
$emailData = json_decode(file_get_contents("php://input"), true);
if (isset($emailData['email'])) {
$emailData = $emailData['email'];
if (preg_match("/@.+\..+$/", $emailData)) {
$statement = DB::prepare("SELECT * FROM users where email = ?");
$statement->bindParam(1, $emailData);
$statement->execute();
$result = $statement->fetchAll();
if (count($result) > 0) {
$emailAvailable = false;
} else {
$emailAvailable = true;
}
echo json_encode($emailAvailable);
}
}
exit;
?>
提前感谢那些有时间看这篇文章并提供帮助的人。我不太擅长编程,我真的需要一个帮手。“如果它和以前的电子邮件地址不一样”,这意味着什么?在什么时候之前输入的?你的问题没有清楚地描述。哦,对不起,是的,我有一个电子邮件输入字段,用户可以在其中键入他的电子邮件地址,代码将检查电子邮件是否可以免费使用(指其内部数据库),我需要确保代码只检查同一电子邮件地址一次,这样如果你理解我的话,它不会增加流量,这就是为什么我需要将提取的数据保存到该emailInput数组中以备将来检查,如果电子邮件地址已被检查,并且用户再次键入相同的电子邮件地址,则不会再次提取,而是查看该数组,并且用户再次键入相同的电子邮件地址。。。什么时候在那次会议期间?那天?曾经描述你的工作流程。为什么用户会键入多个电子邮件地址?如果他再次写入,因为他正在创建一个帐户,并且如果他偶然将已经在数据库中但不知道的电子邮件放入,这就是我的意思