Шустрый

Профиль
Группа: Участник
Сообщений: 89
Регистрация: 5.6.2008
Репутация: нет Всего: нет
|
Привет всем, я сдесь новичок, но вот зерегился и решил, что стоит поделиться своим трудом и спросить совета у более опытных. Оцените плз мою почтовую форму, какие плюсы и какие минусы у нее, помогаем написать идеальную почтовую форму. Кому понравилось пользуйтесь на здоровье))) Сам код не разделен на 2 файла (форма и обработчик) , но это сделает думаю любой даже начинающий. Сам Код: | Код | <?php function show_form() { ?>
<form action="" method=post> <div align="center"> <table width="476" border="1" align="center" cellpadding="0" cellspacing="3" bordercolor="#e28856"> <tr> <td width="213">Ф.И.О.*</td> <td width="267"><input type="text" size="40" name="fio"></td> </tr> <tr> <td>Размещение</td> <td><select name="accommodation"> <option value="1-местное" selected>1-местное</option> <option value="2-местное">2-местное</option> </select></td> </tr> <tr> <td>Категория номера</td> <td><select name="cnumbers"> <option value="Стандартный номер Twin" selected>Стандартный номер Twin</option> <option value="Стандартный номер Queen">Стандартный номер Queen</option> <option value="Номер для инвалидов Twin">Номер для инвалидов Twin</option> <option value="Стандартный номер Super Queen">Стандартный номер Super Queen</option> <option value="Exclusive">Exclusive</option> </select></td> </tr> <tr> <td>Количество номеров</td> <td><input name="nrooms" type="text" size="2"></td> </tr> <tr> <td>Дата заезда</td> <td><select name="Arrival_d"> <option value="01" selected>01</option> <option value="02">02</option> <option value="03">03</option> <option value="04">04</option> <option value="05">05</option> <option value="06">06</option> <option value="07">07</option> <option value="08">08</option> <option value="09">09</option> <option value="10">10</option> <option value="11">11</option> <option value="12">12</option> <option value="13">13</option> <option value="14">14</option> <option value="15">15</option> <option value="16">16</option> <option value="17">17</option> <option value="18">18</option> <option value="19">19</option> <option value="20">20</option> <option value="21">21</option> <option value="22">22</option> <option value="23">23</option> <option value="24">24</option> <option value="25">25</option> <option value="26">26</option> <option value="27">27</option> <option value="28">28</option> <option value="29">29</option> <option value="30">30</option> <option value="31">31</option> </select> <select name="Arrival_m"> <option value="01" selected>01</option> <option value="02">02</option> <option value="03">03</option> <option value="04">04</option> <option value="05">05</option> <option value="06">06</option> <option value="07">07</option> <option value="08">08</option> <option value="09">09</option> <option value="10">10</option> <option value="11">11</option> <option value="12">12</option> </select> <select name="Arrival_y"> <option value="2008" selected>2008</option> <option value="2009">2009</option> <option value="2010">2010</option> <option value="2011">2011</option> <option value="2012">2012</option> <option value="2013">2013</option> <option value="2014">2014</option> <option value="2015">2015</option> </select></td> </tr> <tr> <td>Дата выезда</td> <td><select name="dated_d"> <option value="01" selected>01</option> <option value="02">02</option> <option value="03">03</option> <option value="04">04</option> <option value="05">05</option> <option value="06">06</option> <option value="07">07</option> <option value="08">08</option> <option value="09">09</option> <option value="10">10</option> <option value="11">11</option> <option value="12">12</option> <option value="13">13</option> <option value="14">14</option> <option value="15">15</option> <option value="16">16</option> <option value="17">17</option> <option value="18">18</option> <option value="19">19</option> <option value="20">20</option> <option value="21">21</option> <option value="22">22</option> <option value="23">23</option> <option value="24">24</option> <option value="25">25</option> <option value="26">26</option> <option value="27">27</option> <option value="28">28</option> <option value="29">29</option> <option value="30">30</option> <option value="31">31</option> </select> <select name="dated_m"> <option value="01" selected>01</option> <option value="02">02</option> <option value="03">03</option> <option value="04">04</option> <option value="05">05</option> <option value="06">06</option> <option value="07">07</option> <option value="08">08</option> <option value="09">09</option> <option value="10">10</option> <option value="11">11</option> <option value="12">12</option> </select> <select name="dated_y"> <option value="2008" selected>2008</option> <option value="2009">2009</option> <option value="2010">2010</option> <option value="2011">2011</option> <option value="2012">2012</option> <option value="2013">2013</option> <option value="2014">2014</option> <option value="2015">2015</option> </select></td> </tr> <tr> <td>Наличие завтрака<br> (если не включен в стоимость)</td> <td><select name="breakfast"> <option value="Да" selected>Да</option> <option value="Нет">Нет</option> </select> </td> </tr> <tr> <td>Ваш город*</td> <td><input type="text" size="40" name="city"></td> </tr> <tr> <td valign="top">Трансфер</td> <td><select name="transfer"> <option value="Да" selected>Да</option> <option value="Нет">Нет</option> </select><br> Подробности о трансфере от аэропорта/вокзала до гостиницы и обратно Вы можете узнать у наших менеджеров</td> </tr> <tr> <td>Телефон/факс*<br> (c кодом города)</td> <td><input type="text" size="40" name="tel"></td> </tr> <tr> <td>E-mail*</td> <td><input type="text" size="40" name="email"></td> </tr> <tr> <td>Контактное лицо*</td> <td><input type="text" size="40" name="cont"></td> </tr> <tr> <td>Организация</td> <td><input type="text" size="40" name="organiz"></td> </tr> <tr> <td>Пожелания</td> <td><textarea name="testimonials" rows="5" cols="30"></textarea></td> </tr> <tr> <td>Форма оплаты</td> <td><select name="payment"> <option value="безналичная" selected>безналичная</option> <option value="наличная">наличная</option> </select></td> </tr> <tr> <td colspan="2"><div align="center"> <input type="submit" value="Забронировать номер" name="submit"> </div></td> </tr> </table> </div> </form> * Помечены поля, которые необходимо заполнить <? }
function complete_mail() { // $_POST['title'] содержит данные из поля "Тема", trim() - убираем все лишние пробелы и переносы строк, htmlspecialchars() - преобразует специальные символы в HTML сущности, будем считать для того, чтобы простейшие попытки взломать наш сайт обломались, ну и substr($_POST['title'], 0, 1000) - урезаем текст до 1000 символов. Для переменных $_POST['mess'], $_POST['name'], $_POST['tel'], $_POST['email'] все аналогично
$_POST['fio'] = substr(htmlspecialchars(trim($_POST['fio'])), 0, 50);
$variants=Array('1-местное','2-местное'); if (empty($_POST['accommodation']) || !in_array($_POST['accommodation'], $variants)) die('Нет такого пункта!');
$variants=Array('Стандартный номер Twin','Стандартный номер Queen','Номер для инвалидов Twin','Стандартный номер Super Queen','Exclusive'); if (empty($_POST['cnumbers']) || !in_array($_POST['cnumbers'], $variants)) die('Нет такого пункта!');
$_POST['nrooms'] = substr(htmlspecialchars(trim($_POST['nrooms'])), 0, 2);
$variants=Array('01','02','03','04','05','06','07','08','09','10','11','12','13','14','15','16','17','18','19','20','21','22','23','24','25','26','27','28','29','30','31'); if (empty($_POST['Arrival_d']) || !in_array($_POST['Arrival_d'], $variants)) die('Нет такого пункта!');
$variants=Array('01','02','03','04','05','06','07','08','09','10','11','12'); if (empty($_POST['Arrival_m']) || !in_array($_POST['Arrival_m'], $variants)) die('Нет такого пункта!');
$variants=Array('2008','2009','2010','2011','2012','2013','2014','2015'); if (empty($_POST['Arrival_y']) || !in_array($_POST['Arrival_y'], $variants)) die('Нет такого пункта!');
$variants=Array('01','02','03','04','05','06','07','08','09','10','11','12','13','14','15','16','17','18','19','20','21','22','23','24','25','26','27','28','29','30','31'); if (empty($_POST['dated_d']) || !in_array($_POST['dated_d'], $variants)) die('Нет такого пункта!');
$variants=Array('01','02','03','04','05','06','07','08','09','10','11','12'); if (empty($_POST['dated_m']) || !in_array($_POST['dated_m'], $variants)) die('Нет такого пункта!');
$variants=Array('2008','2009','2010','2011','2012','2013','2014','2015'); if (empty($_POST['dated_y']) || !in_array($_POST['dated_y'], $variants)) die('Нет такого пункта!');
$variants=Array('Да','Нет'); if (empty($_POST['breakfast']) || !in_array($_POST['breakfast'], $variants)) die('Нет такого пункта!');
$_POST['city'] = substr(htmlspecialchars(trim($_POST['city'])), 0, 20);
$variants=Array('Да','Нет'); if (empty($_POST['transfer']) || !in_array($_POST['transfer'], $variants)) die('Нет такого пункта!');
$_POST['tel'] = substr(htmlspecialchars(trim($_POST['tel'])), 0, 30); $_POST['email'] = substr(htmlspecialchars(trim($_POST['email'])), 0, 30); $_POST['cont'] = substr(htmlspecialchars(trim($_POST['cont'])), 0, 50); $_POST['organiz'] = substr(htmlspecialchars(trim($_POST['organiz'])), 0, 30); $_POST['testimonials'] = substr(htmlspecialchars(trim($_POST['testimonials'])), 0, 10000);
$variants=Array('безналичная','наличная'); if (empty($_POST['payment']) || !in_array($_POST['payment'], $variants)) die('Нет такого пункта!');
// если не заполнено поле "ФИО" - показываем ошибку 0 if (empty($_POST['fio'])) output_err(0); // если не заполнено поле "Ваш город" - показываем ошибку 1 if (empty($_POST['city'])) output_err(1); // если не заполнено поле "Телефон/факс" - показываем ошибку 2 if (empty($_POST['tel'])) output_err(2); // если неправильно заполнено поле email - показываем ошибку 3 if(!preg_match("/[0-9a-z_]+@[0-9a-z_^\.]+\.[a-z]{2,3}/i", $_POST['email'])) output_err(3); // если не заполнено поле "Контактное лицо" - показываем ошибку 4 if(empty($_POST['cont'])) output_err(4);
// создаем наше сообщение $mess = ' ФИО:'.$_POST['fio'].' Размещение:'.$_POST['accommodation'].' Категория номера:'.$_POST['cnumbers'].' Колличество номеров:'.$_POST['nrooms'].' Дата заезда:'.$_POST['Arrival_d'].' '.$_POST['Arrival_m'].' '.$_POST['Arrival_y'].' Дата выезда:'.$_POST['dated_d'].' '.$_POST['dated_m'].' '.$_POST['dated_y'].' Наличие завтрака:'.$_POST['breakfast'].' Город:'.$_POST['city'].' Трансфер:'.$_POST['transfer'].' Телефон:'.$_POST['tel'].' Контактное лицо:'.$_POST['cont'].' Организация:'.$_POST['organiz'].' Форма оплаты:'.$_POST['payment'].' Контактный email:'.$_POST['email'].' Написал Вам:'.$_POST['testimonials'];
// $to - кому отправляем $to = '[email protected]'; // $from - от кого $from='Просиба забронировать<www.kw2002.ru>'; mail($to, $_POST['title'], $mess, "From:".$from); echo 'Спасибо! Ваше письмо отправлено.'; show_form();
}
function output_err($num) { $err[0] = 'ОШИБКА! Не введено ФИО.'; $err[1] = 'ОШИБКА! Вы не указали Ваш город.'; $err[2] = 'ОШИБКА! Вы не указали телефон/факс.'; $err[3] = 'ОШИБКА! Неверно введен e-mail.'; $err[4] = 'ОШИБКА! Вы не указали контактное лицо.'; echo '<p><font color="red">'.$err[$num].'</font></p>'; show_form(); exit(); }
if (!empty($_POST['submit'])) complete_mail(); else show_form(); ?>
|
M skyboy | В следующий раз форматируй код самостоятельно | Это сообщение отредактировал(а) skyboy - 5.6.2008, 13:29
|