@Dillett
Начинающий web разработчик

Как передавать значение чекбоксов и выбранных файлов на почту?

День добрый, может кто подсказать что делаю не правильно.
Необходимо отправлять данные с форм на email, все получается кроме данных с чекбоксов и выбранных файлов, приходит одно слово "Array"
https://codepen.io/anon/pen/GXgReM (код php залил в CSS)

И почему то письма приходят в папку со спамом, если подскажете как от этого избавиться буду очень благодарен.
  • Вопрос задан
  • 289 просмотров
Пригласить эксперта
Ответы на вопрос 2
@dtBlack
Есть несколько замечаний:
1. Узнайте что такое $_REQUEST
2. Присмотритесь к именам полей ввода в верстке, разберитесь что значит name="file[]" и что в итоге будет в поле $_POST['file'].
spoiler
Там будет массив, на что указывают [] в имени

3. Обрабатывайте все данные пришедшие от пользователя, и только потом используйте.
4. Познакомьтесь с функцией print_r или var_dump для просмотра того что у вас в переменой. print_r будет полезней из-за второго параметра.

Насчет спама, все очень сложно, нужно читать про фильтры спама и тп. Так же полезно поискать такую информацию на этом сайте. Например IP адрес вашего сайта может быть в черном списке спамеров, что часто бывает на недорогих хостингах.
Ответ написан
Комментировать
@Dillett Автор вопроса
Начинающий web разработчик
Я тут немного подшаманил, в итоге приходит массив данных из чекбоксов, но отельным письмом. Как его собрать в одно письмо и добавить отправку выбранных файлов?
<?php

$method = $_SERVER['REQUEST_METHOD'];

//Script Foreach
$c = true;
if ( $method === 'POST' ) {

	$project_name = trim($_POST["project_name"]);
	$admin_email  = trim($_POST["admin_email"]);
	$form_subject = trim($_POST["form_subject"]);
	$user_Email = "lalalala@mail.ru";
    
    
    $chosen = is_array($_POST['choice']) ? $_POST['choice'] : array();
    $chosen = implode (', ', $chosen );

    $headers  = "Content-type: text/plain; charset=utf-8 \r\n";
    $headers .= 'From: '.$user_Email.'' . "\r\n" .
    'Reply-To: '.$user_Email.'' . "\r\n" .
    'X-Mailer: PHP/' . phpversion();

    $body = "Услуги: ".$chosen;
    $mail = mail($admin_email, $form_subject, $body, $headers);

    if($mail){
    	echo '$body: <br>'.$body;
	    echo '<br><br> $to:<br>'.$admin_email;
    }


	foreach ( $_POST as $key => $value ) {
		if ( $value != "" && $key != "project_name" && $key != "admin_email" && $key != "form_subject" && $key != "choice") {
			$message .= "
			" . ( ($c = !$c) ? '<tr>':'<tr style="background-color: #f8f8f8;">' ) . "
				<td style='padding: 10px; border: #e9e9e9 1px solid;'><b>$key</b></td>
				<td style='padding: 10px; border: #e9e9e9 1px solid;'>$value</td>
			</tr>
			";
		}


	}

} else if ( $method === 'GET' ) {

	$project_name = trim($_GET["project_name"]);
	$admin_email  = trim($_GET["admin_email"]);
	$form_subject = trim($_GET["form_subject"]);

	foreach ( $_GET as $key => $value ) {
		if ( $value != "" && $key != "project_name" && $key != "admin_email" && $key != "form_subject") {
			$message .= "
			" . ( ($c = !$c) ? '<tr>':'<tr style="background-color: #f8f8f8;">' ) . "
				<td style='padding: 10px; border: #e9e9e9 1px solid;'><b>$key</b></td>
				<td style='padding: 10px; border: #e9e9e9 1px solid;'>$value</td>
			</tr>
			";
		}
	}
}

$message = "<table style='width: 100%;'>$message</table>";

function adopt($text) {
	return '=?UTF-8?B?'.Base64_encode($text).'?=';
}

$headers = "MIME-Version: 1.0" . PHP_EOL .
"Content-Type: text/html; charset=utf-8" . PHP_EOL .
'From: '.adopt($project_name).' <'.$admin_email.'>' . PHP_EOL .
'Reply-To: '.$admin_email.'' . PHP_EOL;

mail($admin_email, adopt($form_subject), $message, $headers);
Ответ написан
Ваш ответ на вопрос

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

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