marperia
@marperia
Дизайнер, программист, писатель

Почему не работает форма?

Сокращённая версия кода:
<!DOCTYPE html>
<html lang="en" class="no-js">
	<head>
		<meta charset="UTF-8" />
		<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"> 
		<meta name="viewport" content="width=device-width, initial-scale=1.0"> 
		<title>Mar Studio</title>
		<link rel="stylesheet" type="text/css" href="style.css">
		<link rel="stylesheet" type="text/css" href="default.css" />
		<link rel="stylesheet" type="text/css" href="component.css" />
		<script src="modernizr.custom.js"></script>
	</head>
<body>
	<body class="nl-blurred">
		<div class="container demo-1">
			<!-- Top Navigation -->
			<div class="main clearfix">
				<?
				if (isset ($_POST['messageFF'])) {
					$to = 'моё_мыло_не_скажу@yandex.ru';
					$subject = 'заполнена контактная форма с '.$_SERVER['HTTP_REFERER'];
					$subject = "=?utf-8?b?". base64_encode($subject) ."?=";
					$message = "Имя: ".$_POST['nameFF']."\nEmail: ".$_POST['contactFF']."\n\n".$_POST['messageFF'];
					$headers = 'Content-type: text/plain; charset="utf-8"';
					$headers .= "MIME-Version: 1.0\r\n";
					$headers .= "Date: ". date('D, d M Y h:i:s O') ."\r\n";

					mail($to, $subject, $message, $headers);
				echo ('<p style="color: #FFFFFF; background: #FEA918; padding: 12px 6px 12px 6px; border-radius: 25px;">Ваше сообщение получено, спасибо!</p>');
				}
				?>
				<form id="nl-form" class="nl-form" method="POST">
					Меня зовут <input type="text" placeholder="Василий" name="nameFF">,<br> я хочу заказать <input type="text" name="contactFF" placeholder="пиццу" data-subline="Например, <em>пиццу</em> или <em>суши</em>"> и со мной можно связаться через <input name="messageFF" type="text" placeholder="мой e-mail" data-subline="Так же можете написать <em>телефон</em>">
					<div class="nl-submit-wrap">
						<button class="nl-submit trans" type="submit">Отправить</button>
					</div>
					<div class="nl-overlay"></div>
				</form>
			</div>
		</div><!-- /container -->
		<script src="nlform.js"></script>
		<script>
			var nlform = new NLForm( document.getElementById( 'nl-form' ) );
		</script>
	</body>
</html>

- сокращённый и чутка изменённый код страницы, чтобы было понятнее и проще. По всем правилам php (известных мне) всё должно работать. Что мои кривые руки сделали не так?

Полная версия кода:
<!DOCTYPE html>
<html lang="en" class="no-js">
	<head>
		<meta charset="UTF-8" />
		<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"> 
		<meta name="viewport" content="width=device-width, initial-scale=1.0"> 
		<title>Mar Studio</title>
		<meta name="description" content="Natural Language Form with custom text input and drop-down lists" />
		<meta name="keywords" content="Natural Language UI, sentence form, text input, contenteditable, html5, css3, jquery" />
		<meta name="author" content="Codrops" />
		<link rel="shortcut icon" href="../favicon.ico"> 
		<link rel="stylesheet" type="text/css" href="style.css">
		<link rel="stylesheet" type="text/css" href="default.css" />
		<link rel="stylesheet" type="text/css" href="component.css" />
		<script src="modernizr.custom.js"></script>
	</head>
<body>
	<div style="text-align: left;" id="menu">
		<a href="index.html" style="background: none;"><img src="img/logo.png"></a>
		<nav style="float: right; padding-top: 18px;">
			<a href="about.html" class="trans">О нас</a>
			<a href="port.html" class="trans">Работы</a>
			<a href="order.php" class="trans">Написать</a>
			<a href="eng.html" class="trans" style="margin-right: 15px;">English</a>
		</nav>
	</div>

	<body class="nl-blurred">
		<div class="container demo-1">
			<!-- Top Navigation -->
			<div class="main clearfix">
				<?
				if (isset ($_POST['messageFF'])) {
					$to = моё_мыло_не_скажу@yandex.ru';
					$subject = 'заполнена контактная форма с '.$_SERVER['HTTP_REFERER'];
					$subject = "=?utf-8?b?". base64_encode($subject) ."?=";
					$message = "Имя: ".$_POST['nameFF']."\nEmail: ".$_POST['contactFF']."\n\n".$_POST['messageFF'];
					$headers = 'Content-type: text/plain; charset="utf-8"';
					$headers .= "MIME-Version: 1.0\r\n";
					$headers .= "Date: ". date('D, d M Y h:i:s O') ."\r\n";
					$headers = 'From: mail@marperia.ru' . "\r\n" .
					'Reply-To: моё_мыло_не_скажу@yandex.ru' . "\r\n" .
					'X-Mailer: PHP/' .

					mail($to, $subject, $message, $headers);
				echo ('<p style="color: #FFFFFF; background: #FEA918; padding: 12px 6px 12px 6px; border-radius: 25px;">Ваше сообщение получено, спасибо!</p>');
				}
				?>
				<form id="nl-form" class="nl-form" method="POST">
					Меня зовут <input type="text" placeholder="Василий" name="nameFF">,<br> я хочу заказать <input type="text" name="contactFF" placeholder="пиццу" data-subline="Например, <em>сайт</em> или <em>дизайн флайера</em>"> и со мной можно связаться через <input name="messageFF" type="text" placeholder="мой e-mail" data-subline="Так же можете написать <em>Skype</em> или <em>ссылку на профиль ВК</em>">
					<div class="nl-submit-wrap">
						<button class="nl-submit trans" type="submit">Отправить</button>
					</div>
					<div class="nl-overlay"></div>
				</form>
			</div>
		</div><!-- /container -->
		<script src="nlform.js"></script>
		<script>
			var nlform = new NLForm( document.getElementById( 'nl-form' ) );
		</script>
	</body>
</html>
  • Вопрос задан
  • 2618 просмотров
Решения вопроса 1
DmitriyEntelis
@DmitriyEntelis
Думаю за деньги
0. Из Вашего сообщения не очень понятно в чем заключается "не работает".
Не отправляет письмо? Вы не получаете письмо?
Что? :)

Я не поленился и исполнил Ваш код на своей машине. Все работает.
Уточните в чем проблема.

1. Никогда не пишите спагетти код. Шаблоны всегда должны быть отделены от логики.
Иначе это невозможно ни читать, не поддерживать.
Почитайте про MVC например.

2. Отправлять почту лучше всего с помощью какой нибудь библиотеки. например swiftmailer
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

Похожие вопросы