Каждый элемент формы, который вы хотите отобразить в данных массива POST, когда форма отправлена (и, следовательно, должна быть доступна с помощью $ _POST ['fieldname']), нуждается в атрибуте name. Атрибут ID является необязательным, но его использование ограничено во многих ситуациях - конечно, не требуется в традиционной форме представления, такой как эта.
Кнопка ввода submit
НЕ отправит форму, если вы не сделаете это с помощью Javascript. Возможно, лучше использовать кнопку отправки, как показано ниже.
<form action="mail.php" method="post">
<div class="form-block clearfix">
<input type="text" placeholder="name*" name="name" />
<input type="text" placeholder="email*" name="email" />
</div>
<div class="form-block clearfix">
<input type="text" placeholder="subject*" name="sub" />
</div>
<div class="form-block">
<textarea cols="100" rows="1" placeholder="Message*" name="message" ></textarea>
</div>
<div class="submit-btn">
<input type="submit" name="submit" value="Submit" class="detail-submit"/>
</div>
</form>
Не уверен, почему у вас есть проблемы ~ возможно, следующее предложит просветление. Он протестирован на предмет невозможности отправить электронное письмо (в настоящее время нет локального почтового сервера на компьютере разработчика) и представляет собой демонстрацию «все на одной странице», где PHP эмулирует исходное действие формы mail.php
<code><?php
/* this emulates mail.php */
error_reporting( E_ALL );
/* use a session variable */
session_start();
/* for testing single page demo */
$singlepage=true;
if( $_SERVER['REQUEST_METHOD']=='POST' ){
$to = "My email";
$from = $cc = '';
$subject = "Contact us form";
$errmasg = '';
/* filter POST data */
$args=array(
'name' => FILTER_SANITIZE_STRING,
'email' => FILTER_SANITIZE_EMAIL,
'sub' => FILTER_SANITIZE_STRING,
'message' => FILTER_SANITIZE_STRING
);
$_POST=filter_input_array( INPUT_POST, $args );
/* assign as variables */
extract( $_POST );
$name = htmlentities(trim($name));
$email = htmlentities(trim($email));
$sub = htmlentities(trim($sub));
$message = htmlentities(trim(nl2br($message)));
if( $email ){
$message = "<table border='0' cellpadding='2' cellspacing='2' width='600'>
<tr><td>Name: ".$name." </td></tr>
<tr><td>Email: ".$email."</td></tr>
<tr><td>Subject: ".$sub."</td></tr>
<tr><td>Message:".$message."</td></tr>
</table>";
}
# REMOVE THIS LINE or COMMENT IT OUT FOR REAL USAGE
#exit( sprintf("<pre>%s\n%s
", $ message, print_r ($ _POST, true)));
$ headers = "MIME-Version: 1.0". "\ Г \ п";
$ headers. = "Content-type: text / html; charset = UTF-8". "\ Г \ п";
$ headers. = 'From:'. $ from. "\ Г \ п";
$ headers. = 'Cc:'. $ cc. "\ Г \ п";
if ($ errmasg == "") {
if (mail ($ to, $ subject, $ message, $ headers)) {
$ _SESSION [ 'mailsent'] = 1;
} Еще {
$ _SESSION [ 'mailsent'] = 2;
}
} Еще {
$ _SESSION [ 'mailsent'] = 3;
}
/ *
Если вы используете mail.php, тогда используйте `header` для перенаправления пользователя
вернуться на страницу контактов - предполагается, что она называется contact.php
* /
заголовок if (! $ singlepage) ('Location: contact.php');
}
?>
<! DOCTYPE html>
POST на электронную почту
<! - удалено действие атрибута, так как это работает на той же странице здесь ->
<? PHP
if (! empty ($ _SESSION ['mailsent'])) {
switch ($ _SESSION ['mailsent']) {
case 1: $ message = 'Ваше сообщение было успешно отправлено'; break;
case 2: $ message = 'Извините, у нас возникла проблема с отправкой вашего электронного письма'; break;
случай 3: $ message = 'Поддельные - нет данных'; перерыв;
}
printf ('<h1>% s ', $ message);
unset ($ _SESSION ['mailsent']);
}
?>
<! - элемент имеет NAME ->
<! - кнопка ОТПРАВИТЬ ->
Типичный вывод для отладки
Array
(
[name] => fred flintstone
[email] => fred@bedrock.com
[sub] => betty had better bake a cake
[message] => hey betty
)