@tqvf9a1tiquf

Что прописать в request.php?

Здравствуйте!
Сразу оговорка - полный ноль.
Решить уже не могу третий день.
Есть контактная форма, которая обращается к файлу на сервере с именем request.php (видимо обычно его называют mail.php). Находится он не в корне сайта где index.html, а в отдельной папке с именем /request/. Содержание его следующее:
<?php

if($_POST['id'] === "contact-center-form-2--0-form") {
$mailto = "";

$data_array = json_decode($_POST['data']);
$message = "";
foreach ($data_array as $key => $value) {
if (isset($value->name) && $value->name !== "") {
$message .= $value->name.': '.$value->value.'
';
}
}

$subject = "";

// a random hash will be necessary to send mixed content
$separator = md5(time());

// carriage return type (RFC)
$eol = "\r\n";

// main header (multipart mandatory)
$headers = "From: $mailto" . $eol;
$headers .= "Reply-To: $mailto" . $eol;
$headers .= "MIME-Version: 1.0" . $eol;
$headers .= "Content-Type: multipart/mixed; boundary=\"" . $separator . "\"" . $eol;
$headers .= "Content-Transfer-Encoding: 7bit" . $eol;
$headers .= "This is a MIME encoded message." . $eol;

// message
$body = "--" . $separator . $eol;
$body .= "Content-Type: text/html; charset=iso-8859-1" . $eol;
$body .= "Content-Transfer-Encoding: 8bit" . $eol . $eol;
$body .= "" . $message . "" . $eol . $eol;

foreach( $_FILES as $file) {
if ( !move_uploaded_file( $file['tmp_name'], dirname(__FILE__) . '/../tmp/' . $file['name'] ) ) {
echo "error upload file: " . $file['name'];
continue;
}
$filename = $file['name'];
$path = dirname(__FILE__) . '/../tmp';
$file = $path . "/" . $filename;

$content = file_get_contents($file);
$content = chunk_split(base64_encode($content));

// attachment
$body .= "--" . $separator . $eol;
$body .= "Content-Type: application/octet-stream; name=\"" . $filename . "\"" . $eol;
$body .= "Content-Transfer-Encoding: base64" . $eol;
$body .= "Content-Disposition: attachment" . $eol;
$body .= $content . $eol . $eol;
}

$body .= "--" . $separator . "--";

//SEND Mail
if (mail($mailto, $subject, $body, $headers)) {
echo "mail send ... OK"; // or use booleans here
} else {
echo "mail send ... ERROR!";
print_r( error_get_last() );
}
}
Вопрос как правильно его заполнить?
Перепробовал все варианты - всегда пустая страница и в адресной строке обращение к этому файлу с данными из контактной формы.
Единственное браузер начал выдавать синтакс ошибку когда стал заполнять:
if (mail($mailto, $subject, $body, $headers)) { - это вроде понятно, что первый кому, второй тема сообщения, а дальше не понимаю.
И не понятно нужно ли их ($mailto и $subject) заполнить в if($_POST['id'] - то что в самом начале.
Проверку сервера на отправку сообщений посредством PHP выполнял, все работает.
Спасибо.
  • Вопрос задан
  • 88 просмотров
Пригласить эксперта
Ответы на вопрос 1
akelsey
@akelsey
Вы даете часть кода из которого логика приложения не ясна даже вам (вам доступен весь код). Как вы хотите что б кто-то догадался как это было задумано программистом?
Могу только догадываться, включив режим телепат что файл request.php должен инклюдится в другой файл, переменные $mail/$subject должны быть в объявлены (в коде их нет).
Код в самом начале тоже их не заполняет, он заполняет хидеры smtp но envelope часть не заполняется.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы