- Автор темы
- #1
Написал небольшой скрипт формы обратной связи на php.
Чем отличается ото всех остальных?
Если пользователь ввёл неверные данные, то ему не придётся вводить их заново. Он увидит ошибку, и поправит неправильные данные, не вводя заново все остальные.
Общая логика
Функции
Конструктивная критика превествуется.
Чем отличается ото всех остальных?
Если пользователь ввёл неверные данные, то ему не придётся вводить их заново. Он увидит ошибку, и поправит неправильные данные, не вводя заново все остальные.
Общая логика
Код:
<?php
if (isset($_POST['submit_check'])) { //форма была отправлена
if ($form_errors = validate_form()) { // Если $form_errors присвоился не пустой массив
// то показываем ошибки.
show_form($form_errors);
}
else {
process_form();
}
}
else {
show_form();
}
Функции
Код:
function validate_form() {
$errors = array();
$_POST['name'] = trim($_POST['name']);
$_POST['email'] = trim($_POST['email']);
if (mb_strlen($_POST['name'],'utf8') == 0) {
$errors[] = "Вы не заполнили имя";
}
if (!preg_match('/^[^@\s]+@([-a-z0-9]+\.)+[a-z]{2,}$/i',$_POST['email'])) {
$errors[] = 'Введите правильный e-mail.';
}
if (mb_strlen($_POST['message']) < 10) {
$errors[] = 'Введите текст сообщения.';
}
return $errors;
}
function show_form($errors = '') {
if (!empty($errors)) {
echo "<br><center><div class='warning'><font size='2'color='#FF0000'><b>Обнаружены ошибки:</b></font><br>";
foreach ($errors as $value) {
print $value."<br>";
}
echo "</div></center>";
show_form_content();
}
else {
print <<<HERE
<table align='center' class='table_form' width='400px'>
<form method='post' action="$_SERVER[PHP_SELF]">
<tr><td colspan='2'>Введите вопрос и данные для связи :</td></tr>
<tr><td width='200'>Ваше имя</td>
<td width='*'><input type='text' name='name' value=''></td></tr>
<tr><td>E-Mail</td><td><input type='text' name='email' value=''></td></tr>
<tr><td>Ваш вопрос или комментарий</td><td><textarea rows='5' cols='30' name='message'></textarea></td></tr>
<input name='submit_check' type='hidden' value='1'>
<td><input type='submit' name='submit' class='formbutton' value='Отправить'></td></tr></form></table>
HERE;
}
}
function show_form_content() {
print <<<HERE
<table align='center' class='table_form' width='400px'>
<form method='post' action="$_SERVER[PHP_SELF]">
<tr><td colspan='2'>Введите вопрос и данные для связи :</td></tr>
<tr><td width='200'>Ваше имя</td>
<td width='*'><input type='text' name='name' value='$_POST[name]'></td></tr>
<tr><td>E-Mail</td><td><input type='text' name='email' value='$_POST[email]'></td></tr>
<tr><td>Ваш вопрос или комментарий</td><td><textarea rows='5' cols='30' name='message'>$_POST[message]</textarea></td></tr>
<input name='submit_check' type='hidden' value='1'>
<td><input type='submit' name='submit' class='formbutton' value='Отправить'></td></tr></form></table>
HERE;
}
function process_form() {
$name = $_POST['name'];
$email = $_POST['email'];
$msg = $_POST['message'];
$name=trim($name);
$email=trim($email);
$msg=trim($msg);
if (mail("$email", "С веб сайта", "$msg"));
print "<br><table align='center' class='table_form' width='350px'>
<tr>
<td>Cпасибо $_POST[name]. Сообщение успешно отправлено. <br>Мы ответим Вам максимально быстро.
</td></tr></table>";
}
Конструктивная критика превествуется.