HTML — PHP: контактная форма отправки электронной почты, даже если формы не заполнены?

Я работаю над веб-сайтами некоторое время и продолжаю сталкиваться с этой проблемой с помощью своих контактных форм.

Поэтому я обязательно включаю «обязательные» в контактные формы, и если форма не заполнена, это здорово. Это гарантирует, что пользователь помещает информацию в поля для информации, подлежащей отправке.

Однако на iOS это не так. Эти обязательные теги игнорируются, поэтому я создал свой PHP, чтобы гарантировать, что входные данные все еще необходимы.

Надеюсь, кто-нибудь может мне помочь.

Вот HTML-контактная форма:

        <input type="text" name="phone" class="phoneInput" autocomplete="off" placeholder="What phone number can we reach you at? (Optional)" /><br />

<input type="email" name="email" class="emailInput" autocomplete="off" placeholder="What is your primary e-mail address?" required /><br />

<textarea name="message" id="message" autocomplete="off" placeholder="How may we assist you?" required></textarea><br />

<div class="submit">
<input type="submit" value="SEND MESSAGE" id="button"/>
<div class="ease"></div>
</div>
</form>

обновленный PHP:

<?php

// Name of sender
$name=$_GET["name"];

// Phone number of sender
$number=$_GET["phone"];

// Mail of sender
$mail_from=$_GET["email"];

// Message
$message=$_GET["message"];

// Subject
$subject= "Someone has sent you a message from your contact form!";

// Message Headers
$headers = 'From: ' .$name."\r\n". 'Reply-To: ' . $mail_from."\r\n" . 'Callback Number: '.$number."\r\n";

// E-mail to:
$to ='[email protected]';

// Empty variables, tests to see if any of the fields are empty
$emptyName    = empty($name);
$emptyEmail   = empty($mail_from);
$emptyMessage = empty($message);

// Perform if tests to see if any of the fields are empty, and redirect accordingly
if ($emptyName == true) {
header ("location:/#modalFailure");
} else {
if ($emptyEmail == true) {
header ("location:/#modalFailure");
} else {
if ($emptyMessage == true) {
header ("location:/#modalFailure");
} else {
header ("location:/#modalSuccess");
mail($to, $subject ,$message, $headers);
}
}
}
?>

0

Решение

Вы вызываете функцию mail () перед проверкой полей. Эта функция на самом деле отправляет электронное письмо. Возвращаемая переменная $ send_contact является просто логическим значением, независимо от того, была выполнена функция или нет. Примерно так должно работать:

if(empty($name) || empty($mail_from) || empty($message)) {
header('location:/#modalFailure');
} else {
$mail_sent = mail($to, $subject ,$message, $headers);
if(!$mail_sent) {
header("location:/#modalFailure");
} else {
header("location:/#modalSuccess");
}
}

Этот код столкнется с проблемами, если форма отправит непустые строки. Например, это " " вместо "" или же NULL, Также было бы целесообразно добавить фильтрация а также Проверка к этому коду.

(с другой стороны, вы можете использовать $ _POST вместо $ _GET для отправки формы.)

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]