X   Сообщение сайта
(Сообщение закроется через 3 секунды)



 

Здравствуйте, гость (

| Вход | Регистрация )

Открыть тему
Тема закрыта
> Форма обратной связи
bugmenot
bugmenot
Topic Starter сообщение 31.5.2011, 18:25; Ответить: bugmenot
Сообщение #1


Здравствуйте! Написал простенький обработчик формы обратной связи.
[PHP]<?php
if (isset($_POST['thame'])) {
$thame = $_POST['thame'];
if ($thame == '') unset($thame);
}
if (isset($_POST['email'])) {
$email = $_POST['email'];
if ($email == '') unset($email);
}
if (isset($_POST['text'])) {
$text = $_POST['text'];
if ($text == '') unset($text);
}
if (isset($_POST['captcha'])) {
$captcha = $_POST['captcha'];
if ($captcha == '') unset($captcha);
}
if (isset($thame) && isset($email) && isset($text) && isset($captcha)) {
$name = htmlspecialchars(trim($thame));
$email = htmlspecialchars(trim($email));
$message = htmlspecialchars(trim($text));
$message = htmlspecialchars(trim($captcha));

/* Проверяем правильность ввода email-адреса */
if(!preg_match("/[0-9a-z_]+@[0-9a-z_^\.]+\.[a-z]{2,3}/i", $email)){
die("Неправильный формат e-mail адреса!");
}

$address = "email@example.ru";
$sub = "Сообщение с моего нового сайта!!!";
$mes = "Оставил такой E-mail: $email \nСодержание письма: \n$text";

/* Отправка сообщения */
$verify = mail ($address,$sub,$mes,"Content-type:text/plain; charset = windows-1251\r\nFrom:$email");
if ($verify == 'true'){
print "<html><head>
<meta http-equiv='Content-Type' content='text/html; charset=windows-1251'>
<meta http-equiv='Refresh' content='0; URL=:history.back()'>
</head>
</html>";
}
else {
print "<html><head>
<meta http-equiv='Content-Type' content='text/html; charset=windows-1251'>
<meta http-equiv='Refresh' content='0; URL=/zakaz/'>
</head>
</html>";
}
}
else{
print "<html><head>
<meta http-equiv='Content-Type' content='text/html; charset=windows-1251'>
<meta http-equiv='Refresh' content='0; URL=/zakaz/'>
</head>
</html>";
}
?>[/PHP]
Но в таком виде не устраивает. нужно сделать так ,что б при "ошибке" (не заполнение форм, неправильный формат мыла и тд.), скрипт не выводил данные на новой странице, А переадресовывался как тут
[PHP] print "<html><head>
<meta http-equiv='Content-Type' content='text/html; charset=windows-1251'>
<meta http-equiv='Refresh' content='0; URL=/zakaz/'>
</head>
</html>";[/PHP]
на страницу с которой были отправленные данные и передавал код ошибки файлу с формой, что б можно было соответственно ей вывести пользователю,что не так.
И так чтобы данные которые пользователь ввел, не стирались в форме.
И так интересует:
1. Как в [PHP] print "<html><head>
<meta http-equiv='Content-Type' content='text/html; charset=windows-1251'>
<meta http-equiv='Refresh' content='0; URL=/zakaz/'>
</head>
</html>";[/PHP]
вместо URL=/zakaz/ ,прописать так чтоб возврат был не на определенную страницу, а на ту с которой была отправка данных?
2. Как сделать так, чтоб после неправильного ввода не стирались введенные данные с формы.?
0
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
bugmenot
bugmenot
Topic Starter сообщение 1.6.2011, 13:46; Ответить: bugmenot
Сообщение #2


Решил:) Вот, Может кому будет нужно!
Обработчик
[PHP]<?php
$root= $_SERVER['HTTP_REFERER'];
//Функция первода кирилических букв в верхний регистр
function toupper($content) {
$content = strtr($content, "абвгдеёжзийклмнорпстуфхцчшщъьыэюя",
"АБВГДЕЁЖЗИЙКЛМНОРПСТУФХЦЧШЩЪЬЫЭЮЯ");
return strtoupper($content);
}

if (isset($_POST['thame'])) {
$thame = $_POST['thame'];
if ($thame == '') unset($thame);
}
if (isset($_POST['email'])) {
$email = $_POST['email'];
if ($email == '') unset($email);
}
if (isset($_POST['text'])) {
$text = $_POST['text'];
if ($text == '') unset($text);
}
if (isset($_POST['captcha'])) {
$captcha = $_POST['captcha'];
if ($captcha == '') unset($captcha);
}

if (isset($thame) || isset($email) || isset($text) || isset($captcha)){
session_start();
$_SESSION['var']= array (
'thame'=>$thame,
'email'=>$email,
'text'=>$text,
'captcha'=>$captcha
);
}
/* Проверяем заполнены ли все поля */
if (isset($thame) && isset($email) && isset($text) && isset($captcha)) {

/* Убираем все лишние пробелы и переносы строк, а также преобразуем все теги HTML в символы*/
$name = htmlspecialchars(trim($thame));
$email = htmlspecialchars(trim($email));
$message = htmlspecialchars(trim($text));
$message = htmlspecialchars(trim($captcha));

/* Проверяем правильность ввода email-адреса */
if(!preg_match("/[0-9a-z_]+@[0-9a-z_^\.]+\.[a-z]{2,3}/i", $email)){
$_SESSION['stat']= array('mailer'=>'Неправильный формат адреса',);
die("<html><head>
<meta http-equiv='Content-Type' content='text/html; charset=windows-1251'>
<meta http-equiv='Refresh' content='0; URL=$root'>
</head>
</html>");
}

// Проверяем капчу
$captcha = toupper($captcha);
if ($captcha!=='НЕТ'){

session_unregister("captcha");
$_SESSION['stat']= array('captcha'=>'Ботам тут не место:)',);
die("<html><head>
<meta http-equiv='Content-Type' content='text/html; charset=windows-1251'>
<meta http-equiv='Refresh' content='0; URL=$root'>
</head>
</html>");
}

/* Формируем сообщение */
$address = "email@example.ru";
$sub = "Сообщение с моего нового сайта!!!";
$mes = "Оставил такой E-mail: $email \nСодержание письма: \n$text";

/* Отправка сообщения */
$verify = mail ($address,$sub,$mes,"Content-type:text/plain; charset = windows-1251\r\nFrom:$email");
if ($verify == 'true'){
$_SESSION['stat']= array('true'=>'Сообщение отправлено');
print "<html><head>
<meta http-equiv='Content-Type' content='text/html; charset=windows-1251'>
<meta http-equiv='Refresh' content='0; URL=$root'>
</head>
</html>";
}
else {
$_SESSION['stat']= array('fail'=>'Сообщение не отправлено');
print "<html><head>
<meta http-equiv='Content-Type' content='text/html; charset=windows-1251'>
<meta http-equiv='Refresh' content='0; URL=$root'>
</head>
</html>";
}
}
else{
$_SESSION['stat']= array('hole'=>'Все поля должны быть заполнены');
print "<html><head>
<meta http-equiv='Content-Type' content='text/html; charset=windows-1251'>
<meta http-equiv='Refresh' content='0; URL=$root'>
</head>
</html>";
}
?>[/PHP]

форма в html файле (не забываем до начала html документа вызвать сессию session_start())
[PHP] <div id="minerror">
<?=$_SESSION['stat']['mailer'];?>
<?=$_SESSION['stat']['hole'];?>
<?=$_SESSION['stat']['fail'];?>
<?=$_SESSION['stat']['captcha'];?>
<?=$_SESSION['stat']['true'];
if (isset($_SESSION['stat']['true'])){
session_unset($_SESSION);
session_destroy();
}?>
</div>
<div class="tab-f colum-f"><img src="/img/footer_main2.jpg" width="222" height="58">
<br/><br/>
<form method="POST" action="/js/zakaz-form/comment_mini/comment.php" enctype="multipart/form-data" name="mincom">
<div class="kut"><input type="text" name="thame" class="form-style" placeholder="Тема" value="<?=$_SESSION['var']['thame'];?>"></div><br/><br/>
<div class="kut"><input type="text" name="email" class="form-style" placeholder="Email" value="<?=$_SESSION['var']['email'];?>"></div><br/><br/> <div class="kut"><input type="text" name="captcha" class="form-style" placeholder="Вы робот?" value="<?=$_SESSION['var']['captcha'];?>">></div><br/><br/><br/>
<div class="kut-fortextarea"><textarea name="text" class="form-style" rows="5" placeholder="Текст"><?=$_SESSION['var']['text'];?></textarea></div><br/>
<input type="submit" class="submit-buton-form" name="login" value="Отправить">
</form> [/PHP]
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Den1xxx
Den1xxx
сообщение 1.6.2011, 14:23; Ответить: Den1xxx
Сообщение #3


(bugmenot @ 1.6.2011, 16:46) *
meta http-equiv='Refresh' content='0; URL=$root'

так не работает, переменные можно вставлять в string только если они обрамлены " а не '
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
bugmenot
bugmenot
Topic Starter сообщение 1.6.2011, 15:51; Ответить: bugmenot
Сообщение #4


(Den1xxx @ 1.6.2011, 17:23) *
так не работает, переменные можно вставлять в string только если они обрамлены " а не '

как это не работает?)) я уже запустил форму, все работает на УРА!
а вот это что такое????
die("
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
P0ZiTR0N
P0ZiTR0N
сообщение 1.6.2011, 16:02; Ответить: P0ZiTR0N
Сообщение #5


die(status); - это псевдоним exit(status); ,- заканчивает выполнение скрипта. Эта функция печатает status непосредственно перед выходом
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
bugmenot
bugmenot
Topic Starter сообщение 1.6.2011, 16:08; Ответить: bugmenot
Сообщение #6


P0ZiTR0N, та я знаю что такое die:), это я показал так Den1xxx кавычки двойные где стоят:)
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
P0ZiTR0N
P0ZiTR0N
сообщение 1.6.2011, 16:29; Ответить: P0ZiTR0N
Сообщение #7


Ну.. тогда его мысль (да и правильней будет так):
[PHP]echo("...
<meta http-equiv=\"Refresh\" content=\"0; URL=$root\">
...
");[/PHP]
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
bugmenot
bugmenot
Topic Starter сообщение 1.6.2011, 17:14; Ответить: bugmenot
Сообщение #8


вот немного подправил... так думаю нормально
[PHP]<?php
//Определяем путь старницы с которой пришли
$root= $_SERVER['HTTP_REFERER']."#footer";

// Переадресация
function refrsh ($rf){
print "<html><head>
<meta http-equiv='Content-Type' content='text/html; charset=windows-1251'>
<meta http-equiv='Refresh' content='0; URL=$rf'>
</head>
</html>";
}

//первод кирилических букв в верхний регистр
function toupper($content) {
$content = strtr($content, "абвгдеёжзийклмнорпстуфхцчшщъьыэюя",
"АБВГДЕЁЖЗИЙКЛМНОРПСТУФХЦЧШЩЪЬЫЭЮЯ");
return strtoupper($content);
}

if (isset($_POST['thame'])) {
$thame = $_POST['thame'];
if ($thame == '') unset($thame);
}
if (isset($_POST['email'])) {
$email = $_POST['email'];
if ($email == '') unset($email);
}
if (isset($_POST['text'])) {
$text = $_POST['text'];
if ($text == '') unset($text);
}
if (isset($_POST['captcha'])) {
$captcha = $_POST['captcha'];
if ($captcha == '') unset($captcha);
}

if (isset($thame) || isset($email) || isset($text) || isset($captcha)){
session_start();
$_SESSION['var']= array (
'thame'=>$thame,
'email'=>$email,
'text'=>$text,
'captcha'=>$captcha
);
}
/* Проверяем заполнены ли все поля */
if (isset($thame) && isset($email) && isset($text) && isset($captcha)) {

/* Убираем все лишние пробелы и переносы строк, а также преобразуем все теги HTML в символы*/
$name = htmlspecialchars(trim($thame));
$email = htmlspecialchars(trim($email));
$message = htmlspecialchars(trim($text));
$message = htmlspecialchars(trim($captcha));

/* Проверяем правильность ввода email-адреса */
if(!preg_match("/[0-9a-z_]+@[0-9a-z_^\.]+\.[a-z]{2,3}/i", $email)){
$_SESSION['stat']= array('mailer'=>'Неверный формат адреса',);
die(refrsh ($root));
}

// Проверяем капчу
$captcha = toupper($captcha);
if ($captcha!=='НЕТ'){

session_unregister("captcha");
$_SESSION['stat']= array('captcha'=>'Ботам тут не место:)',);
die(refrsh ($root));
}

/* Формируем сообщение */
$address = "email@example.ru";
$sub = "Сообщение с моего нового сайта!!!";
$mes = "Оставил такой E-mail: $email \nСодержание письма: \n$text";

/* Отправка сообщения */
$verify = mail ($address,$sub,$mes,"Content-type:text/plain; charset = windows-1251\r\nFrom:$email");
if ($verify == 'true'){
$_SESSION['stat']= array('true'=>'Сообщение отправлено');
refrsh ($root);
}
else {
$_SESSION['stat']= array('fail'=>'Сообщение не отправлено');
refrsh ($root);
}
}
else{
$_SESSION['stat']= array('hole'=>'Нужно заполнить все поля');
refrsh ($root);
}
?>[/PHP]

Замечание модератора:
Эта тема была закрыта автоматически ввиду отсутствия активности в ней на протяжении 100+ дней.
Если Вы считаете ее актуальной и хотите оставить сообщение, то воспользуйтесь кнопкой
или обратитесь к любому из модераторов.
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Открыть тему
Тема закрыта
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0


Свернуть

> Похожие темы

  Тема Ответов Автор Просмотров Последний ответ
Открытая тема (нет новых ответов) Тема имеет прикрепленные файлыПринимаю заказы на копирайтинг, рерайтинг. Стабильно работаю, всегда на связи
Нужен автор текстов, копирайтер? Обращайтесь
14 KriptoFin 8092 22.9.2020, 18:07
автор: mrSana
Открытая тема (нет новых ответов) Нужен простой лендинг с формой обратной связи
10 Kuzzma 2598 11.9.2020, 21:33
автор: Kuzzma
Открытая тема (нет новых ответов) Настройка каптчи на форму обратной связи
3 woolf 2043 9.4.2019, 17:21
автор: bobur
Открытая тема (нет новых ответов) Спам через форму обратной связи на сайте
14 Evgeniy3200 8084 15.5.2017, 20:53
автор: samvel32453
Открытая тема (нет новых ответов) Требуется доработка формы заказа/обратной связи
0 Dinamitt 1803 22.2.2017, 22:02
автор: Dinamitt


 



RSS Текстовая версия Сейчас: 19.4.2024, 9:35
Дизайн