Intereting Posts
Где MAMP поддерживает свой php.ini? как реализовать систему входа под php? Не удается заставить mysql_insert_id () работать Как использовать php-функцию без исходного файла загрузки? PHP-код для anti hotlinking Изменение содержимого div с помощью раскрывающегося списка, javascript и PHP Проверка типа MIME бесполезна для загрузки файла? (в частности, используя API файлов Javascript)? Как включить сжатие gzip с помощью PHP Simple HTML DOM Parser Microsoft® ODBC Driver 11 для SQL Server® на RedHat Linux с PHP – дает ошибку, когда параметр привязки с PDO для хранимых процедур Борьба с отношением «один ко многим» в форме администратора Сохранение элементов корзины покупок в файлах cookie и базе данных Замена токенов в строке из массива Почему этот код не увеличивает счетчик правильно? Подтверждение электронной почты Codeigniter AJAX Выберите все категории с последними сообщениями, пользователями и информацией о теме

Как добавить список выбора в форме контакта php

Я пытаюсь добавить выбранный элемент html в форму, которая будет отправлена ​​вместе с электронной почтой. Я хотел бы знать, как правильно получить значение из списка выбора и передать его на PHP. Я не смог правильно понять это. Буду признателен за любую помощь. Ниже мой код …

function _(id){ return document.getElementById(id); } function submitForm(){ _("contact-submit").disabled = true; _("status").innerHTML = 'please wait ...'; var formdata = new FormData(); formdata.append( "n", _("n").value ); formdata.append( "e", _("e").value ); formdata.append( "t", _("t").value ); formdata.append( "w", _("w").value ); formdata.append( "m", _("m").value ); var ajax = new XMLHttpRequest(); ajax.open( "POST", "contact.php" ); ajax.onreadystatechange = function() { if(ajax.readyState == 4 && ajax.status == 200) { if(ajax.responseText == "success"){ _("contact-form").innerHTML = '<h2 class="tnx">Thanks '+_("n").value+', we will be in touch soon!</h2>'; } else { _("status").innerHTML = ajax.responseText; _("contact-submit").disabled = false; } } } ajax.send( formdata ); } 

HTML

  <div class="cat-select"> <label class="cat-selects" for="subject"><span>Area of Interest</span> <select name="subject" class="select-field" id="s"> <option value="General Inquiry">General Inquiry</option> <option value="Elderly Care">Elderly Care</option> <option value="Child Care">Child Care</option> </select> </label> </div> 

PHP

  <?php if( isset($_POST['n']) && isset($_POST['e']) && isset($_POST['t']) && isset($_POST['w']) && isset($_POST['m']) ){ $n = $_POST['n']; // HINT: use preg_replace() to filter the data $e = $_POST['e']; $t = $_POST['t']; $w = $_POST['w']; $m = nl2br($_POST['m']); $to = "hello@gmail.com"; $from = $e; $subject = 'Contact Form Message'; $message = '<b>Name:</b> '.$n.' <br><b>Email:</b> '.$e.' <p>'.$s.' '.$m.'</p>'; $headers = "From: $from\n"; $headers .= "MIME-Version: 1.0\n"; $headers .= "Content-type: text/html; charset=iso-8859-1\n"; if( mail($to, $subject, $message, $headers) ){ echo "success"; } else { echo "The server failed to send the message. Please try again later."; } } ?> 

id вашего элемента <select> имеет значение «s», но ваш Javascript не ссылается на него нигде. Предполагая, что ваша функция _() относится к id , вам нужно будет добавить следующую строку с аналогичными строками.

 formdata.append( "s", _("s").value ); 

Это должно сделать $_POST['s'] доступным для вас на стороне PHP.

Не забудьте сделать что-то, чтобы избежать всех полей, отправленных через эту форму, а не только текстовые входы и текстовые поля, чтобы избежать попыток использовать сайт или получателя сообщения.