Я создаю сценарий проверки электронной почты и использую ajax, поэтому всякий раз, когда пользователь вводит ложное или недействительное электронное письмо, будет отображаться панель ошибок с именем ошибки, а когда электронное письмо истинно и принадлежитактивная учетная запись, пользователю будет отправлено электронное письмо с инструкциями, а в строке ошибок указано, что электронное письмо отправлено.Проблема в том, что даже функция почты не работает, в строке ошибок постоянно говорится, что письмо отправлено.Поэтому я не хочу, чтобы несколько строк определяли, было ли отправлено письмо, чтобы показать «письмо не было отправлено» в строке ошибок.
Это мой php-файл:
<?php
include '../../app/init.php';
/* Clean email */
$recover_email = $_POST['recover_email'];
/* check if email is valid */
if(!filter_var($recover_email, FILTER_VALIDATE_EMAIL)) {
/* email not valid */
echo 3;
/* Check if email exist */
} else if(Database::exists('user_id', 'users', ['email' => $recover_email])) {
/* Define some variables */
$user_id = Database::simple_get('user_id', 'users', ['email' => $recover_email]);
$lost_password_code = md5($recover_email + microtime());
/* Update the current activation email */
$database->query("UPDATE `users` SET `lost_password_code` = '{$lost_password_code}' WHERE `user_id` = {$user_id}");
/* Send the email */
sendmail($recover_email, $settings->contact_email, $language->lost_password->email->title, sprintf($language->lost_password->email->content, $settings->url, $recover_email, $lost_password_code));
/* email exist */
echo true;
} else if(!Database::exists('user_id', 'users', ['email' => $email])) {
/* email not exist */
echo false;
}
?>
Это мои почтовые функции:
function send_mail($to, $from, $title, $message) {
$headers = "From: " . strip_tags($from) . "\r\n";
$headers .= "MIME-Version: 1.0\r\n";
$headers .= "Content-Type: text/html; charset=ISO-8859-1\r\n";
mail($to, $title, $message, $headers);
}
function sendmail($to, $from, $title, $message) {
global $settings;
if(!empty($settings->smtp_host) && !empty($settings->smtp_port) && !empty($settings->smtp_user) && !empty($settings->smtp_pass)) {
$mail = new PHPMailer;
$mail->isSMTP();
$mail->SMTPDebug = 0;
$mail->SMTPSecure = 'tls';
$mail->SMTPAuth = true;
$mail->isHTML(true);
$mail->Host = gethostbyname('tls://'.$settings->smtp_host);
$mail->Port = $settings->smtp_port;
$mail->Username = $settings->smtp_user;
$mail->Password = $settings->smtp_pass;
$mail->setFrom($from, $settings->title);
$mail->addReplyTo($from, $settings->title);
$mail->addAddress($to);
$mail->Subject = $title;
$mail->Body = $message;
if (!$mail->send()) {
send_mail($to, $from, $title, $message);
}
} else {
send_mail($to, $from, $title, $message);
}
}
Мне нужно только несколько строк в файле php, чтобы вернуть его в ответ на файл ajax