Форма отправки данных с сайта

Форум для тех кто начинает осваивать язык php.
Аватара пользователя
LenaWriter
Сообщения: 7
Зарегистрирован: Вс фев 23, 2014 11:13 pm

Форма отправки данных с сайта

#1

Сообщение LenaWriter » Вс фев 23, 2014 11:43 pm

Может ли кто помочь: надо написать скрипт формы отправки данных с сайта на эл. почту. В форме 1 поле для данных "Имя", под ним 2 варианта выбора "Да" и "Нет". Сайт не на движке. Надо так, чтобы после отправки данных (нажатия на кнопку "Отправить") страница повторно загружалась в исходное положение. Только скрипт РНР без Ajax, JQuery. Сама форма отправки в индексной странице есть, надо только к ней файл mail.php. Нужен ли при этом файл htaccess, чтобы данные из формы отправлялись, или будет работать без него?
Сама форма:

Код: Выделить всё

<form method="post" action="mail.php">
<input type="text" class="inputText" name="name" value="Ваше имя" required/>
<INPUT type="radio" name="answer" value="Да">Да<BR>
<INPUT type="radio" name="answer" value="Нет">Нет<BR>
<INPUT type="button" value="Отправить">
<INPUT type="reset">
</form>
 

Реклама
Аватара пользователя
Slash
Администратор
Сообщения: 2208
Зарегистрирован: Сб авг 11, 2012 7:39 am
Поблагодарили: 81 раз

Re: Форма отправки данных с сайта

#2

Сообщение Slash » Пн фев 24, 2014 8:04 am

Простой пример:
Ваша форма:

Код: Выделить всё

<form method="post">
 <input type="text" class="inputText" name="name" value="Ваше имя" required/>
  <input type="radio" name="answer" value="Да">Да<br />
  <input type="radio" name="answer" value="Нет">Нет<br />
 <input type="submit" name="submit" value="Отправить">
 <input type="reset">
</form> 
И сам скрипт:

Код: Выделить всё

if (isset($_POST['submit'])) {        #Если кнопка была нажата
    if (empty($_POST['name'])) {      #Проверяем пуста или нет переменная name
        $info = 'Вы не указали имя.';
    }
    else if (empty($_POST['answer'])) {    #Проверяем был ли сделан выбор
        $info = 'Вы не выбрали вариант.';
    }    
    else {                            #Если все поля заполнены, то идем дальше
        $name = $_POST['name'];
        $answer = $_POST['answer'];
        $to = 'куда@mail.ru'; 
        $subject = 'Заголовок письма (Результат голосования)';        
        $message = 'Пользователь '.$name.' выбрал вариант: '.$answer;
        $headers = 'Content-type: text/html; charset=UTF-8\r\n';
        
        mail($to, $subject, $message, $headers); #Отправляем данные на почту
        $info = 'Данные отправлены';
    }                
}

$info = (isset($info)) ? $info : NULL;
echo $info; 

Аватара пользователя
LenaWriter
Сообщения: 7
Зарегистрирован: Вс фев 23, 2014 11:13 pm

Re: Форма отправки данных с сайта

#3

Сообщение LenaWriter » Ср фев 26, 2014 2:54 am

Здравствуйте.
Спасибо за ответ.
Но, не работает.
Я весь РНР код поместила в отдельный файл (mail1.php - не путать с mail.php, который тоже есть на сайте). Функция выполняется, после нажатия кнопки отправки выводится Данные отправлены, но на почту результат не приходит.
Если поместить РНР в head - вообще не работает (форма не реагирует на нажатие кнопки).
Могу дать эту тестовую страничку с кодом: [ссылка удалена]
(эта форма в самом низу страницы находится под серым блоком)

Аватара пользователя
Slash
Администратор
Сообщения: 2208
Зарегистрирован: Сб авг 11, 2012 7:39 am
Поблагодарили: 81 раз

Re: Форма отправки данных с сайта

#4

Сообщение Slash » Ср фев 26, 2014 10:51 am

LenaWriter писал(а):на почту результат не приходит
Адрес почты получателя какой? Случаем не от сервиса Mail.Ru?
Ошибки какие то при этом выходят?

Делаю все, как Вы говорите, вставляю в отдельный файл mail1.php PHP код приведенный во втором посте, создаю форму в файле index.php:

Код: Выделить всё

<form method="post" action="mail1.php">
 <input type="text" class="inputText" name="name" value="Ваше имя" required/>
  <input type="radio" name="answer" value="Да">Да<br />
  <input type="radio" name="answer" value="Нет">Нет<br />
 <input type="submit" name="submit" value="Отправить">
 <input type="reset">
</form>
Все прекрасно работает, на почту отчет приходит.

Аватара пользователя
LenaWriter
Сообщения: 7
Зарегистрирован: Вс фев 23, 2014 11:13 pm

Re: Форма отправки данных с сайта

#5

Сообщение LenaWriter » Ср фев 26, 2014 3:43 pm

Почта от Яндекса. Это может иметь значение?
Ошибок при отправке нет, скрипт как бы работает, но письма не приходят. Тут дело не в почтовом ящике (из другой формы в той же тестовой страничке (другой скрипт) на тот же ящик письма приходят). У вас он работает в обычной идексной страничке (не на движке?). Даже если взять сам этот скрипт и форму (и больше ничего) и поместить в индексную страницу (так нагляднее смотреть) - тоже не отправляются.

Аватара пользователя
Slash
Администратор
Сообщения: 2208
Зарегистрирован: Сб авг 11, 2012 7:39 am
Поблагодарили: 81 раз

Re: Форма отправки данных с сайта

#6

Сообщение Slash » Ср фев 26, 2014 6:47 pm

LenaWriter писал(а):Почта от Яндекса. Это может иметь значение?
Да - Re: mail() - отправка писем при помощи PHP
LenaWriter писал(а):У вас он работает в обычной идексной страничке (не на движке?).
Да, простая страница, имеет только код с поста.

Аватара пользователя
LenaWriter
Сообщения: 7
Зарегистрирован: Вс фев 23, 2014 11:13 pm

Re: Форма отправки данных с сайта

#7

Сообщение LenaWriter » Ср мар 05, 2014 11:58 pm

Возможно дело в хостинге (я для этой формы использую бесплатный хостинг), а может и нет.
Но у меня есть там другая форма, которая работает на нем, письма приходят.
Обычная форма на 3 поля:

Код: Выделить всё

<?php
$mail_1="моя почта@epage.ru";
$mail_2 = "";
$eol = "\r\n";
 
function filter($value){
    return htmlspecialchars($value);}
 

$headers .= 'X-Mailer: PHP v' . phpversion() . $eol;
$headers .= 'MIME-Version: 1.0' . $eol;
$headers .="Content-Type:text/html; charset=utf-8".$eol;

$headers.="     Сообщение из сайта  ";
$headers.="    Имя:    ".filter($_POST['name']);
$headers.="    E-Mail: ".filter($_POST['email']);
$headers.="    Сообщение:
".filter($_POST['mess']);

$message="     Сообщение из сайта  ";
$message.="    Имя:    ".filter($_POST['name']);
$message.="    E-Mail: ".filter($_POST['email']);

if(isset($_POST['name']) && isset($_POST['mess']))
{
   header ("Location: http://сайт.hostei.com/pismoend.html" .$url);
  txit;
 
@mail($mail_1, $message,$headers);
}
?>
Может найдете решение, или почему с этой письма приходят, а с другой нет.

Аватара пользователя
Slash
Администратор
Сообщения: 2208
Зарегистрирован: Сб авг 11, 2012 7:39 am
Поблагодарили: 81 раз

Re: Форма отправки данных с сайта

#8

Сообщение Slash » Пт мар 07, 2014 12:17 pm

Попробуйте в свой код, после:

Код: Выделить всё

$message.="    E-Mail: ".filter($_POST['email']); 
добавить:

Код: Выделить всё

$message.="    Вариант ответа: ".filter($_POST['answer']); 
Затем, это:

Код: Выделить всё

if(isset($_POST['name']) && isset($_POST['mess'])) 
заменить на:

Код: Выделить всё

if(isset($_POST['name']) && isset($_POST['mess']) && isset($_POST['answer'])) 
Ну и конечно надо добавить строчки в Вашу форму:

Код: Выделить всё

<input type="radio" name="answer" value="Да">Да<br />
<input type="radio" name="answer" value="Нет">Нет
Каков результат?

Аватара пользователя
LenaWriter
Сообщения: 7
Зарегистрирован: Вс фев 23, 2014 11:13 pm

Re: Форма отправки данных с сайта

#9

Сообщение LenaWriter » Пт мар 07, 2014 11:54 pm

Так работает, действительно только значение заменить. Спасибо за помощь.

Ответить Пред. темаСлед. тема

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 0 гостей