PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Описание: PHP скрипта формы обратной связи
burndalen
Отправлено: 04 Мая, 2011 - 14:18:40
Post Id


Новичок


Покинул форум
Сообщений всего: 14
Дата рег-ции: Май 2011  


Помог: 0 раз(а)




Добрый день, всем, есть следующий код PHP скрипта формы обратной связи:
CODE (htmlphp):
скопировать код в буфер обмена
  1. [/code]
  2. <?php
  3. header('Content-Type: text/html; charset=Windows-1251');
  4. if(isset($_GET["mail"]))
  5.    echo 'Ваше письмо отправлено...';
  6. $admin = 'email';
  7. if ( isset( $_POST['sendMail'] ) ) {
  8.    $name  = substr( $_POST['name'], 0, 64 );
  9.    $email   = substr( $_POST['email'], 0, 64 );
  10.    $subject = substr( $_POST['subject'], 0, 64 );
  11.    $message = substr( $_POST['message'], 0, 250 );
  12.   }
  13.  
  14.    // обработка ошибок
  15.    $error = '';
  16.    if ( empty( $name ) ) $error = $error.'<li>Не заполнено поле "Имя"</li>';
  17.    if ( empty( $email ) ) $error = $error.'<li>Не заполнено поле "E-mail"</li>';
  18.    if ( empty( $subject ) ) $error = $error.'<li>Не заполнено поле "Тема"</li>';
  19.    if ( empty( $message ) ) $error = $error.'<li>Не заполнено поле "Сообщение"</li>';
  20.    if ( !empty( $email ) and !preg_match( "#^[0-9a-z_\-\.]+@[0-9a-z\-\.]+\.[a-z]{2,6}$#i", $email ) )
  21.        $error = $error.'<li>поле "E-mail" должно соответствовать формату somebody@somewhere.ru</li>';
  22.    if ( !empty( $error ) ) {
  23.        $_SESSION['sendMailForm']['error']   = '<p>При заполнении формы были допущены ошибки:
  24.        </p><ul>'.$error.'</ul>';
  25.        $_SESSION['sendMailForm']['name']    = $name;
  26.        $_SESSION['sendMailForm']['email']   = $email;
  27.        $_SESSION['sendMailForm']['subject'] = $subject;
  28.        $_SESSION['sendMailForm']['message'] = $message;
  29.        header( 'Location: '.$_SERVER['PHP_SELF'] );
  30.        // перенаправление в корневую страницу если есть ошибки
  31.        die();
  32.    }
  33.  
  34.    $body = "АВТОР:".$name." E-MAIL".$email." ТЕМА:".$subject." СООБЩЕНИЕ:".$message;
  35.    if ( mail($admin, "Заполнена форма на сайте", $body) ){
  36.        $_SESSION['success'] = true;
  37.      echo "Сообщение успешно отправлено";
  38.    }
  39.    else
  40.   {
  41.        $_SESSION['success'] = false;
  42.    header( 'Location: '.$_SERVER['PHP_SELF'] );
  43.    die();
  44.    }
  45. ?>
  46. [code=htmlphp]


Достаточно добротный и рабочий код, но есть две хорошоватости:

1) письма с заполненной формы приходят в непонятной кодировке;
2) после нажатия кнопки отправить пользователь получает белый экран с собщением что оно успешно ушло, хотелось бы конечно чтобы это напись возникала всплывающе, на той же странице не давая белый экран.

У кого какие мысли, да под мыслями конечно автор темы понимает конкретные строчки кода Улыбка
 
 Top
Zuldek
Отправлено: 04 Мая, 2011 - 14:37:09
Post Id


Постоянный участник


Покинул форум
Сообщений всего: 2122
Дата рег-ции: Июнь 2010  


Помог: 50 раз(а)




$body = convert_cyr_string ($body,w,k);

вместо вывода сообщения об успешной отправке в скрипте обработчика формы —

header( 'Location: http://page_you_want_to_see_after_sending.php?reselt=1' );

на "той же" странице (код страницы, или указание на то является ли обработчик формы и сама форма одной страницей вы не дали) помещаем что-то такое:

if(isset($_GET['reselt']) && $_GET['reselt']==1) echo "<div class='super_message'>Как ни странно, ваше сообщение отправлено.</div>";
 
 Top
burndalen
Отправлено: 04 Мая, 2011 - 14:46:41
Post Id


Новичок


Покинул форум
Сообщений всего: 14
Дата рег-ции: Май 2011  


Помог: 0 раз(а)




Zuldek
Вы большой молодец вы могли бы уже своими мысли вставить уже в готовый скрипт его код выше? И нужен ли исходик html страницы где форма для этого?
 
 Top
AdMeen
Отправлено: 04 Мая, 2011 - 14:52:44
Post Id



Посетитель


Покинул форум
Сообщений всего: 371
Дата рег-ции: Сент. 2009  
Откуда: Воронеж


Помог: 1 раз(а)




Zuldek пишет:
...


имхо, было бы разумней использовать уже готовую переменную сессии, нежели возится с гет, который моет быть изменен вручную.

что такое reselt?
 
 Top
Zuldek
Отправлено: 04 Мая, 2011 - 15:02:24
Post Id


Постоянный участник


Покинул форум
Сообщений всего: 2122
Дата рег-ции: Июнь 2010  


Помог: 50 раз(а)




AdMeen пишет:
Zuldek пишет:
...


имхо, было бы разумней использовать уже готовую переменную сессии, нежели возится с гет, который моет быть изменен вручную.

что такое reselt?


Сделаем вид что подменивший вручную Get не знает как сделать такое же с сессией и используем сессию Подмигивание.
Ну а вообще да, без сарказмов, правильнее будет пользовать уже имеющуюся переменную сесии. И нет, вставить надо тебе самому, ибо раб-день окончен и едем домой Язычок. Тов. AdMeen, выведите пж. человеку лаконичный вариант с сессией

(Отредактировано автором: 04 Мая, 2011 - 15:05:24)

 
 Top
burndalen
Отправлено: 04 Мая, 2011 - 15:04:27
Post Id


Новичок


Покинул форум
Сообщений всего: 14
Дата рег-ции: Май 2011  


Помог: 0 раз(а)




Zuldek
Ок я тогда подожду когда у вас будет время, так как сам в этом очень плохо разбираюсь а это нужно сделать себе на раз
 
 Top
burndalen
Отправлено: 06 Мая, 2011 - 12:13:15
Post Id


Новичок


Покинул форум
Сообщений всего: 14
Дата рег-ции: Май 2011  


Помог: 0 раз(а)




Zuldek
Вы куда то пропали
 
 Top
burndalen
Отправлено: 07 Мая, 2011 - 06:51:14
Post Id


Новичок


Покинул форум
Сообщений всего: 14
Дата рег-ции: Май 2011  


Помог: 0 раз(а)




Zuldek
Ну так и?
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 1 (гостей: 1, зарегистрированных: 0)
« Кодировки и все смежное »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB