Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/249.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 如何修复代码以确保仅当电子邮件与前一封不同时,它才能提取&;将提取的数据保存到let";emailInput";?_Javascript_Php - Fatal编程技术网

Javascript 如何修复代码以确保仅当电子邮件与前一封不同时,它才能提取&;将提取的数据保存到let";emailInput";?

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

这是我的JS语言,它检查用户键入的电子邮件地址是否具有常规电子邮件地址的结构,以及它是否与以前的电子邮件地址不同(如果用户以前键入了它们),并将fetch发送到PHP以检查电子邮件是否在DB中:

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数组中以备将来检查,如果电子邮件地址已被检查,并且用户再次键入相同的电子邮件地址,则不会再次提取,而是查看该数组,并且用户再次键入相同的电子邮件地址。。。什么时候在那次会议期间?那天?曾经描述你的工作流程。为什么用户会键入多个电子邮件地址?如果他再次写入,因为他正在创建一个帐户,并且如果他偶然将已经在数据库中但不知道的电子邮件放入,这就是我的意思