Я надеюсь, что есть решение для этого, я нооб в php, я не мог понять это.Как подтвердить форму в php
Я получил некоторую помощь отсюда, чтобы проверить форму html в php. Он работает нормально ... но я обнаружил, что после того, как я нажал кнопку отправки & php показывает ошибки, есть поле ввода, запрашивающее у пользователя ответы на математические вопросы ... когда я вхожу в ответ, а затем снова нажмите кнопку отправки, он просто говорит, что почта успешно отправлена, но другие поля по-прежнему пусты. Любые идеи, как это исправить. Кроме того, значение php в тегах ввода для ответа на вопросник не сохраняет текст в поле, он исчезает.
Спасибо за ур!
<div id="contact">
<h1 class="heading1"> Contact:</h1>
<form name="contact" action="formtest.php" method="post">
<label for="YourName">Your Name:</label>
<input type="text" name="name" class="required" value="<?= isset($_POST['name']) ? $_POST['name'] : '' ?>" />
<label for="YourEmail">Your Email:</label>
<input type="text" name="email" class="required" value="<?= isset($_POST['email']) ? $_POST['email'] : '' ?>"/>
<label for="Subject">Subject:</label>
<input type="text" name="subject" class="required" value="<?= isset($_POST['subject']) ? $_POST['subject'] : '' ?>" />
<label for="YourMessage">Your Message:</label>
<textarea name="message" class="required"><?= isset($_POST['message']) ? $_POST['message'] : '' ?></textarea>
<p class="c3">10 + 5 =<input type="text" name="answerbox" id="answerbox" "<?= isset($_POST['answerbox']) ? $_POST['answerbox'] : '' ?>"/></p>
<fieldset>
<input type="submit" name="submit" id="submit" value="Send" class="required"/>
<input type="reset" id="reset" value="Reset"/>
</fieldset>
<?php
if(isset($_POST['submit'])){
$name = trim($_POST["name"]);
$email = trim($_POST["email"]);
$subject = trim($_POST["subject"]);
$message = trim($_POST["message"]);
$answerbox = trim($_POST["answerbox"]);
if(empty($_POST['name'])){
print "<div class='formerrors'><li>Please type your name.</li></div>";
}
else {
if (ctype_alpha($name) === false) {
print "<div class='formerrors'><li>Your name only should be in letters!</li></div>";
}
}
if(empty($_POST['email'])){
print "<div class='formerrors'><li>You've forgot to type your email address.</li></div>";
} else{
if(filter_var($email, FILTER_VALIDATE_EMAIL) === false){
print "<div class='formerrors'><li>Your email is not valid, please check.</li></div>";
}
}
if(empty($_POST['subject'])){
print "<div class='formerrors'><li>Please type a subject.</li></div>";
}
if(empty($_POST['message'])){
print "<div class='formerrors'><li>You've forgot to type your message.</li></div>";
}
if(empty($_POST['answerbox'])){
print "<div class='formerrors'><li>Please answer the math question.</li></div>";
}
else {
if($answerbox != 15){
print"<div class='formerrors'><li>Answer is not correct.</li></div>";
}
else{
$headers = 'From: '.$email. "\r\n" .
'Reply-To: '.$email . "\r\n" .
'X-Mailer: PHP/' . phpversion();
mail('[email protected]',$subject,$message,$headers);
print "<div class='formerrors'><li>mail succesuffully sent</li></div>";
}
}
}
?>
</form>
</div><!--contact-->
Вы используете операторы 'if' для печати сообщений; с последним 'else', который отправляет почту. Таким образом, единственный способ, по которому сообщение не будет отправлено, - это «$ answerbox! = 15» - true. Может быть, добавьте флаг, который установлен, если какая-либо проверка верна, и добавьте окончательный, если он отправит почту, если флаг не установлен. – andrewsi
спасибо за это, если вы не возражаете, PLZ показать мне пример кода. – user2120702