Народ, подскажите, пожалуйста, как организовать простейший вариант отправки формы на e-mail. Версия Free. Знаний 0.0001. Если есть возможность, объясните на пальцах плиз.
function complete_mail() {
// $_POST['title'] содержит данные из поля "Тема", trim() - убираем все лишние пробелы и переносы строк, htmlspecialchars() - преобразует специальные символы в HTML сущности, будем считать для того, чтобы простейшие попытки взломать наш сайт обломались, ну и substr($_POST['title'], 0, 1000) - урезаем текст до 1000 символов. Для переменных $_POST['mess'], $_POST['name'], $_POST['tel'], $_POST['email'] все аналогично
$_POST['title'] = substr(htmlspecialchars(trim($_POST['title'])), 5, 1000);
$_POST['mess'] = substr(htmlspecialchars(trim($_POST['mess'])), 10, 1000000);
$_POST['name'] = substr(htmlspecialchars(trim($_POST['name'])), 4, 30);
$_POST['tel'] = substr(htmlspecialchars(trim($_POST['tel'])), 9, 30);
$_POST['email'] = substr(htmlspecialchars(trim($_POST['email'])), 3, 50);
// если не заполнено поле "Имя" - показываем ошибку 0
if (empty($_POST['name']))
output_err(0);
// если неправильно заполнено поле email - показываем ошибку 1
if(!preg_match("/[0-9a-z_]+@[0-9a-z_^\.]+\.[a-z]{2,3}/i", $_POST['email']))
output_err(1);
// если не заполнено поле "Сообщение" - показываем ошибку 2
if(!preg_match("/[а-я_]+[а-я_]+[а-я]{2,3}/i", $_POST['mess']))
output_err(2);
// если не заполнено поле "Контактный телефон" - показываем ошибку 3
if(!preg_match("/[0-9_]+[0-9_]/i", $_POST['tel']))
output_err(3);
// создаем наше сообщение
$mess = '
Имя отправителя:'.$_POST['name'].'
Контактный телефон:'.$_POST['tel'].'
Контактный email:'.$_POST['email'].'
'.$_POST['mess'];
// $to - кому отправляем
$to = 'Ваше мыло';
// $from - от кого
$from='Мыло';
mail($to, $_POST['title'], $mess, "From:".$from);
echo 'Спасибо! Ваше письмо отправлено.';
}
function output_err($num)
{
$err[0] = 'ОШИБКА! Не введено имя.';
$err[1] = 'ОШИБКА! Неверно введен e-mail.';
$err[2] = 'ОШИБКА! Не введено сообщение.';
$err[3] = 'ОШИБКА! Не введен телефон.';
echo '<p>'.$err[$num].'</p>';
show_form();
exit();
}
if (!empty($_POST['submit'])) complete_mail();
else show_form();
?>
Экспериментируем и наслаждаемся. Если кто знает как к этому прицепить капчу то будет очень хорошо. Пускай поделится.
Это не работает. Выдает ошибки. Поделитесь, а .... плиииз! Уже столько форм перепробовано. То ошибки, то кодировка, то еще что...Напишите, пож. что надо вставить в эту динамическую страницу. Пожалейте не просто чайника... но чайника женского пола, а?!!!! Можно в личку, если тут не хотите gruavxng@znvy.eh!
<p><strong class="style9">*</strong> — поля, обязательные для заполнения.</p>
<p>Телефон в международном формате </p>
</form>
<?
}
function complete_mail() {
// $_POST['title'] содержит данные из поля "Тема", trim() — убираем все лишние пробелы и переносы строк,
// htmlspecialchars() — преобразует специальные символы в HTML сущности, будем считать для того, чтобы простейшие
// попытки взломать наш сайт обломались, ну и substr($_POST['title'], 0, 1000) — урезаем текст до 1000 символов. Для
// переменных $_POST['mess'], $_POST['name'], $_POST['tel'], $_POST['email'] все аналогично