X   Сообщение сайта
(Сообщение закроется через 3 секунды)



 

Здравствуйте, гость (

| Вход | Регистрация )

Открыть тему
Тема закрыта
> Как объединить форму с обработчиком?
SOROKVLAD29
SOROKVLAD29
Topic Starter сообщение 28.6.2018, 20:33; Ответить: SOROKVLAD29
Сообщение #1


Есть почтовая форма «myform.php» и к ней обработчик «contacts.php».
Мне нужно из двух файлов сделать один «myform.php», совмещающий форму и обработчик.

Подобную процедуру делал неоднократно, и все работало отлично!
Но в этот раз что то не задалось…. Упорно не работает!

Мои действия = содержимое файла «contacts.php»
Развернуть/Свернуть
<?php
if (isset ($_POST['contactFF'])) {
$spam = trim($_POST['check']);
$spammsg = trim($_POST['message']);
if ($spam == 'stopSpam' && $spammsg == '') /* Проверка на спам */
{
$to = "xxx@mail.ru"; // поменять на свой электронный адрес
$from = $_POST['contactFF'];
$subject = "Письмо с блога";
$sender = "xxx@domain.kz"; // поменять на электронный адрес с которого сервер отправляет почту
$message = "Имя: ".$_POST['nameFF']."\nEmail: ".$from."\nIP: ".$_SERVER['REMOTE_ADDR']."\nСообщение: ".$_POST['messageFF'];
$boundary = md5(date('r', time()));
$filesize = '';
$headers = "MIME-Version: 1.0\r\n";
$headers .= "From: " . $sender . "\r\n";
$headers .= "Reply-To: " . $from . "\r\n";
$headers .= "Content-Type: multipart/mixed; boundary=\"$boundary\"\r\n";
$message="
Content-Type: multipart/mixed; boundary=\"$boundary\"

--$boundary
Content-Type: text/plain; charset=\"utf-8\"
Content-Transfer-Encoding: 7bit

$message";
for($i=0;$i<count($_FILES['fileFF']['name']);$i++) {
if(is_uploaded_file($_FILES['fileFF']['tmp_name'][$i])) {
$attachment = chunk_split(base64_encode(file_get_contents($_FILES['fileFF']['tmp_name'][$i])));
$filename = $_FILES['fileFF']['name'][$i];
$filetype = $_FILES['fileFF']['type'][$i];
$filesize += $_FILES['fileFF']['size'][$i];
$message.="

--$boundary
Content-Type: \"$filetype\"; name=\"$filename\"
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename=\"$filename\"

$attachment";
}
}
$message.="
--$boundary--";

if ($filesize < 10000000) { // проверка на общий размер всех файлов. Многие почтовые сервисы не принимают вложения больше 10 МБ
mail($to, $subject, $message, $headers);
echo $_POST['nameFF'].', Ваше письмо отправлено, спасибо!';
} else {
echo 'Извините, письмо не отправлено. Размер всех файлов превышает 10 МБ.';
}
} else { echo 'Ошибка, письмо не отправлено.'; }

}
?>

скопировал и поместил в файл «myform.php» перед кодом самой формы
Развернуть/Свернуть
<form id="feedback-form" action="contacts.php" enctype="multipart/form-data" method="post">
<h2>Письмо автору</h2>
<input id="nameFF" class="w100 border" name="nameFF" required="" type="text" placeholder="Ваше имя" />
<input id="contactFF" class="w100 border" name="contactFF" required="" type="text" placeholder="Ваш email" />
<input id="fileFF" class="w100" multiple="multiple" name="fileFF[]" type="file" />
<textarea id="messageFF" class="w100 border" name="messageFF" required="" rows="5" placeholder="Ваше сообщение"></textarea>
<div class="w0"><textarea id="message" class="w100 border" name="message" rows="5"></textarea>
<input id="check" name="check" type="text" value="" /></div>
<input id="submitFF" type="submit" value="Отправить" onClick="document.getElementById('check').value = 'stopSpam';" /></form>
<script>
document.getElementById('feedback-form').addEventListener('submit', function(evt){
var http = new XMLHttpRequest(), f = this;
evt.preventDefault();
http.open("POST", "contacts.php", true);
http.onreadystatechange = function() {
if (http.readyState == 4 && http.status == 200) {
alert(http.responseText);
if (http.responseText.indexOf(f.nameFF.value) == 0) { // очистить поле сообщения, если в ответе первым словом будет имя отправителя
f.messageFF.removeAttribute('value');
f.messageFF.value='';
}
}
}
http.onerror = function() {
alert('Извините, данные не были переданы');
}
http.send(new FormData(f));
}, false);
</script>

в самой форме удалил ссылку на файл обработчика, то есть вместо «action="contacts.php"» написал «action=""», а в скрипте формы, вместо «http.open("POST", "contacts.php", true);» соответственно «http.open("POST", "", true);».
Метод проверенный и до сего момента сбоев не было.
Может, кто сталкивался с подобными заморочками, подскажите, плизззз, где я что упускаю. Спасибо!

Сообщение отредактировал SOROKVLAD29 - 28.6.2018, 20:37


--------------------
Натяжка HTML шаблонов на MODX Rev, Joomla 3, GetSimpleCMS, MyEngineCMS, Kandidat CMS.
0
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
waydersoon
waydersoon
сообщение 29.6.2018, 13:40; Ответить: waydersoon
Сообщение #2


SOROKVLAD29, почему бы не перейти на современный и более удобный AJAX?
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
SOROKVLAD29
SOROKVLAD29
Topic Starter сообщение 29.6.2018, 16:32; Ответить: SOROKVLAD29
Сообщение #3


waydersoon,
в данный момент меня интересует именно эта форма....


--------------------
Натяжка HTML шаблонов на MODX Rev, Joomla 3, GetSimpleCMS, MyEngineCMS, Kandidat CMS.
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
miketomlin
miketomlin
сообщение 29.6.2018, 18:33; Ответить: miketomlin
Сообщение #4


SOROKVLAD29, вы можете различать запросы, использующие один и тот же адрес/обработчик, по виду:
Код
if ($_SERVER['REQUEST_METHOD']=='POST')


--------------------


Поблагодарили: (1)
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
WoWeb
WoWeb
сообщение 29.6.2018, 19:01; Ответить: WoWeb
Сообщение #5


создайте дополнительный input в формах type="hidden" с name="proverka" и value="form1" и form2

А в обработчике проверяйте какой имя у name, например:

Код
if($_POST['proverka'] == 'form1'){
  здесь обрабатываем форму 1
}else if($_POST['proverka'] == 'form2'){
  здесь обрабатываем форму 2
}


Замечание модератора:
Эта тема была закрыта автоматически ввиду отсутствия активности в ней на протяжении 100+ дней.
Если Вы считаете ее актуальной и хотите оставить сообщение, то воспользуйтесь кнопкой
или обратитесь к любому из модераторов.


Сообщение отредактировал WoWeb - 29.6.2018, 19:01


--------------------


Поблагодарили: (1)
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Открыть тему
Тема закрыта
2 чел. читают эту тему (гостей: 2, скрытых пользователей: 0)
Пользователей: 0


Свернуть

> Похожие темы

  Тема Ответов Автор Просмотров Последний ответ
Открытая тема (нет новых ответов) Как в пушсетках покупают по 100-200 тысяч кликов за день?
2 Boymaster 635 Сегодня, 17:52
автор: Boymaster
Горячая тема (нет новых ответов) Как вы отдыхаете от работы за компом
151 adw-kupon.ru 19835 Вчера, 13:52
автор: Vmir
Открытая тема (нет новых ответов) Как вы бросили работу и перешли на заработок с сайтов?
20 uahomka 3456 Вчера, 11:54
автор: Skyworker
Горячая тема (нет новых ответов) Как вывести деньги в Украине с заблокированного Юмани ?
30 freeax 5028 20.4.2024, 16:49
автор: Liudmila
Открытая тема (нет новых ответов) Арбитражники, как ведете учет расходов и доходов?
13 Boymaster 2028 20.4.2024, 15:06
автор: Boymaster


 



RSS Текстовая версия Сейчас: 24.4.2024, 19:19
Дизайн