Здравствуйте, помогите написать php файл для формы отправки письма. Я скачала шаблон сайта, все получилось, но не получается отправку сообщений наладить. Вот html код <form name="contactForm" id="contactForm" method="post" action="" novalidate="novalidate"> <fieldset> <div class="form-field"> <input name="contactName" type="text" id="contactName" placeholder="Your Name" value="" minlength="2" required="" aria-required="true" class="full-width"> </div> <div class="form-field"> <input name="contactEmail" type="email" id="contactEmail" placeholder="Your Email" value="" required="" aria-required="true" class="full-width"> </div> <div class="form-field"> <input name="contactSubject" type="text" id="contactSubject" placeholder="Subject" value="" class="full-width"> </div> <div class="form-field"> <textarea name="contactMessage" id="contactMessage" placeholder="Your Message" rows="10" cols="50" required="" aria-required="true" class="full-width"></textarea> </div> <div class="form-field"> <button class="full-width btn--primary">Submit</button> <div class="submit-loader"> <div class="text-loader">Sending...</div> <div class="s-loader"> <div class="bounce1"></div> <div class="bounce2"></div> <div class="bounce3"></div> </div> </div> </div> </fieldset> </form>
В action в теге form нужно указать путь к скрипту обработки запроса, если ни чего не ставить то будет отправлять на себя же. В твоем случае это скорее всего html файл а нужен php
у меня вот такой есть скрипт, его можно исправить для этой формы? <?php //чтение данныйх из формы $header = $name = $_POST['name']; //имя $email = $_POST['email']; //e-mail //$phone = $_POST['phone']; телефон //$header = $address = $_POST['address']; адрес //$length = $_POST['length']; Длина помещения, м //$width = $_POST['width']; Ширина помещения, м //$height = $_POST['height']; Высота помещения, м $message = $_POST['message']; //тело сообщения //----------------------------------------------- function _mail ($from, $to, $subj, $what) { mail($to, $subj, $what, "From: $from Reply-To: $from Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit" ); } $text = "Имя: " . $name . "\r\n"; $text .= "e-mail: " . $email . "\r\n"; //$text .= "телефон: " . $phone . "\r\n"; //$text .= "Адрес: " . $address . "\r\n"; //$text .= "Длина помещения, м: " . $length . "\r\n"; //$text .= "Ширина помещения, м: " . $width . "\r\n"; //$text .= "Высота помещения, м: " . $height . "\r\n"; $text .= $message; //echo $text; _mail ('natalya.jpg@ayayayay.ru', 'natalya.jpg@гугугугуг.ru', $header, $text); ?>
В инпутах есть тег name, он передается в пост массив как ключ, а value как значение. Так что да, вполне можно переделать
Тут надо Вам HTML изучать основы а потом уже о функции mail думать, откуда вы отправляете, с локального или хоста.как настроен сервер и тп. --- Добавлено --- надо в начале правильно принимать данные с формы HTML: 1. Указать правильные данные для тега action 2. Имена в тегах инпут должны совпадать с именами глобального массива в PHP скрипте 3. Присвоить данным с метода пост глобального массива переменным которые твоей душе угодно. 4. настроить сервер если с локального отправляешь и проверить функцию включена ли она у тебя вообще
Рихард, gruth, спасибо ответ, я знаю основы html, а где можно почитать на эту тему хорошую статью или небольшую книгу? Я по специальности художник, но все время мне приходится иметь дело с подобными проблемами, весь язык php мне сложно будет выучить.
https://php.ru/manual/function.mail.html Прежде чем приступать к функции самой в скрипте <?php ?> приведите в порядок вашу HTML форму: 1. В теге action = " Укажите где будет приниматься для обработки данные переданные с формы" То есть Если у Вас сценарий находится в файле index.php то пишите action="index.php" при условии что и форма и сценарий находятся в одной папке, но лучше в этом теге писать так action=$_SERVER['PHP_SELF'] 2. То что вы отправляли с формы примерно в таком теге <input name = "Имя" В PHP значение которые вы ввели в форму под названием <input name = "Имя" будет содержатся в такой штуке под названием массив как $_POST['имя'] 3. ЧТоб ы по человечески использоваться функцию вы должны отправленные инфо с первой формы упаковать в ящики под названием перменные взяв предварительно это с такой штуки как массив ТО есть схема такова <input name="имя"> превращается в PHP в такую штуку <?php $_POST['имя'] ?> а потом в самом PHP упаковываете ее в ящики переменные <?php $name=$_POST['Имя'] ?> А потом уже читаете вот эту штуку https://php.ru/manual/function.mail.html Чтобы знать какой ящик (переменную в какое место функции вводить) Если все равно не запускается то вообще интересно стоит ли у вас вообще PHP и откуда вообще вы отправляете с локального компа или с хоста сайта, настроиваете вебсервер проверяете включена ли у вас эта функция и тп
@Рихард, нафиг пустое переприсваивание делать? Лучше бы существование POST-параметра проверили. @natalya.jpg, это вам не яичницу поджарить. Обратитесь к специалисту или становитесь им сами, если есть несколько лет в запасе.
У меня кроме яичницы еще 2 высших образования) обращусь куда мне нужно без ваших цу. Более не нужно писать в эту тему.
согласен что должно быть if(isset($_POST['submit']) перед присваиванием. Просто моя запись сводилась к тому что перед этими проверками надо еще логически форму HTML соединить со скриптом. Так как по выше написано я понял что задающий этот вопрос не может этого сделать а в идеале то можно еще так: сырой вариант <?php class form{ public $name; public $lastname; public function validation(){ if(isset($_POST['submit'])) { ......Валидация } } public function prisvaivanie(){ if($this->validayion()){ ..присваивание если валидация в норме } } public function otpravka($name,$lastname,$to,$from){ if($this->prisvaivanie){ mail();.... Отправка если присваивание прошло } } $form=new page(); $form->otpravka; --- Добавлено --- а вы не обижайтесь,тут люди разные бывают . странно только почему опытные разработчики молчат