отправить значение флажка в форме PHP

У меня есть вопрос относительно формы php. Я добавил флажок в существующую форму, но не уверен, как добавить его в php. Я бы хотел, чтобы он отправил «да», если посетители проверяют его, и «нет», если он не является.

<form method="POST" name="contactform" action="contact-form-handler.php"> <p> <input type="text" name="name" placeholder="name"> </p> <p> <input type="tel" name="tel" placeholder="phome"> <br> </p> <p> <input type="text" name="email" placeholder="mail"> <br> </p> <p> <input type="checkbox" name="newsletter[]" value="newsletter" checked>i want to sign up for newsletter<br> </p> <input type="submit" value="Submit"><br> </form> 

вот PHP-код для формы, все там, кроме флажка. Мне нужно знать его значение, когда я получаю почту. например: «Имя: Джон, электронная почта: test@test.com, Тел: 12345, Информационный бюллетень: Да»

 <?php $errors = ''; $myemail = 'test@gmail.com';//<-----Put Your email address here. if(empty($_POST['name']) || empty($_POST['email']) || empty($_POST['tel'])) { $errors .= "\n Error: all fields are required"; } $name = $_POST['name']; $email_address = $_POST['email']; $message = $_POST['tel']; if (!preg_match( "/^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[az]{2,3})$/i", $email_address)) { $errors .= "\n Error: Invalid email address"; } if( empty($errors)) { $to = $myemail; $email_subject = "Contact form submission: $name"; $email_body = "You have received a new message. ". " Here are the details:\n Name: $name \n Email: $email_address \n Tel \n $message\n Newsletter \n $newsletter" } ; $headers = "From: $myemail\n"; $headers .= "Reply-To: $email_address"; mail($to,$email_subject,$email_body,$headers); //redirect to the 'thank you' page header('Location: contact-form-thank-you.html'); } ?> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <title>Contact form handler</title> </head> <body> <!-- This page is displayed only if there is some error --> <?php echo nl2br($errors); ?> </body> </html> 

Спасибо,

Вот как это должно выглядеть, чтобы вернуть простой Yes когда он проверен.

 <input type="checkbox" id="newsletter" name="newsletter" value="Yes" checked> <label for="newsletter">i want to sign up for newsletter</label> 

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

Когда форма будет отправлена, если флажок установлен, $_POST['newsletter'] будет равен Yes . Просто, как вы проверяете, нет ли $_POST['name'] , $_POST['email'] и $_POST['tel'] , вы можете сделать то же самое.

Вот пример того, как вы добавили бы это в свой адрес электронной почты на стороне php:

Под существующим кодом:

 $name = $_POST['name']; $email_address = $_POST['email']; $message = $_POST['tel']; 

Добавить:

 $newsletter = $_POST['newsletter']; if ($newsletter != 'Yes') { $newsletter = 'No'; } 

Если флажок установлен, он добавит Yes в ваш адрес электронной почты, если он не был проверен, он добавит No

Если флажок установлен, вы получите значение для своего массива $_POST . Если элемент не будет полностью исключен из массива.

Самый простой способ проверить это:

 if (isset($_POST['myCheckbox'])) { $checkBoxValue = "yes"; } else { $checkBoxValue = "no"; } 

Для вашего кода добавьте его сразу под другой предварительной обработкой:

 $name = $_POST['name']; $email_address = $_POST['email']; $message = $_POST['tel']; if (isset($_POST['newsletter'])) { $newsletter = "yes"; } else { $newsletter = "no"; } 

Вам также нужно немного изменить HTML. Измените эту строку:

 <input type="checkbox" name="newsletter[]" value="newsletter" checked>i want to sign up for newsletter<br> 

к этому:

 <input type="checkbox" name="newsletter" value="newsletter" checked>i want to sign up for newsletter<br> ^^^ remove square brackets here. 

попробуйте изменить эту часть,

 <input type="checkbox" name="newsletter[]" value="newsletter" checked>i want to sign up for newsletter 

для этого

 <input type="checkbox" name="newsletter" value="newsletter" checked>i want to sign up for newsletter 
 if(isset($_POST["newsletter"]) && $_POST["newsletter"] == "newsletter"){ //checked } 

заменить:

 $name = $_POST['name']; $email_address = $_POST['email']; $message = $_POST['tel']; 

с:

 $name = $_POST['name']; $email_address = $_POST['email']; $message = $_POST['tel']; if (isset($_POST['newsletter'])) { $checkBoxValue = "yes"; } else { $checkBoxValue = "no"; } 

затем замените эту строку кода:

 $email_body = "You have received a new message. ". " Here are the details:\n Name: $name \n Email: $email_address \n Tel \n $message\n Newsletter \n $newsletter" 

с:

 $email_body = "You have received a new message. ". " Here are the details:\n Name: $name \n Email: $email_address \n Tel \n $message\n Newsletter \n $newsletter";