Большой архив статей, книг, документации по программированию, вебдизайну, компьютерной графике, сетям, операционным системам и многому другому
 
<Добавить в Избранное>    <Сделать стартовой>    <Реклама на сайте>    <Контакты>
  Главная Документация Программы Обои   Экспорт RSS E-Books
 
 

   Интернет технологии -> PHP -> Обработка форм


Обработка форм

Теперь нам предстоит разобраться, как увязать программирование на HTML с скриптами на РНР. На самом деле это еще проще, чем что-либо другое в РНР. Все сделано так, чтобы пользователь чувствовал себя достаточно комфортно и не испытывал проблем, в том числе и при программировании. Каким же образом можно достичь плотного взаимодействия программиста и пользователя?

Посещая сайты, каждый из Вас не раз сталкивался с различными формами и полями для ввода. Некоторые даже пытались разобраться, как все это работает, но непременно натыкались на тот факт, что данные формы нужно как-то и чем-то обработать. Но как!? И главное – чем? Ответ нам уже ясен - с помощью РНР. И именно это мы с Вами сейчас и будем делать...

Для начала давайте сделаем ручками (ими, родимыми, ими) форму для отправки писем на любой адрес, который тоже требуется ввести в форме. На этом примере и разберемся, как все работает:

<form method="POST" action="action.phtml">
<p><input type="text" name="email" size="20">
<br><input type="text" name="name" size="20">
<br><textarea rows="2" name="txt" cols="20"></textarea>
<br><input type="submit" value="Submit" name="B1">
<input type="reset" value="Reset" name="B2"></p></form>

Запустив этот HTML код в браузере, Вы увидите перед собой небольшую форму с тремя полями для ввода. Особенности этой формы таковы: обработка, которая начнется после нажатия кнопки отправить, будет передана файлу action.phtm. Если надо указать другой путь - воспользуйтесь стандартными методами указания пути. Имя первого поля - email, и туда посетитель будет вводить адрес, куда надо отправить письмо. Второе поле имеет имя name, и оно предназначено для ввода имени того, кто хочет отправить письмо. Можно конечно обойтись и без этого, но для наглядности не помешает. Следующее поле - поле ввода текста сообщения, и оно имеет имя txt. Как видите все имена можно давать так, что бы в последствии не запутаться в них. Наша форма почти готова. Не хватает только эстетического оформления, но это уже дело десятое, можно сделать любые надписи или применить различные стили. Тут Вы можете в полной мере проявить свои творческие способности. А мы теперь перейдем к нашей основной части - обработчику формы, который, как Вы помните, находится у нас в файле action.phtm.

<?php mail($email, $name, $txt, $name); ?>

Все. И опять очень просто. Как Вы, надеюсь, поняли уже, все те имена, которые мы присвоили полям для ввода в нашей форме, перешили точно такими же в скрипт РНР, который указывается в форме как обработчик. Причем значением этих имен (переменных РНР) будет являться то, что посетитель Вашей странички введет в соответствующее поле. Адрес окажется в переменной $email, имя - в $name, а текст - в $txt. Вот и вся наука! Любое имя формы становится переменной в обработчике, написанном на РНР. Метод, которым передаются значения и имена переменных в обработчик, называется POST. Если помните, несколько выше мы познакомились с еще одним методом передачи данных скрипту – GET. Тут Вы можете видеть коренное отличие двух похожих методов. В первом случае ( GET ) – по ссылке, и во втором ( POST ) – через форму.

Запомните это как дважды два, и жизнь покажется Вам намного прекрасней!

Отправка почты – второй пример

Очень часто хочется знать, что происходит на сайте за время Вашего отсутствия. Конечно, можно периодически проверять форум, гостевую книгу, другие сервисы сайта на предмет новых сообщений, но есть способ лучше! Почему бы ни присылать самому себе сообщение на свой почтовый ящик, когда на сайте происходит то, или иное событие.

Как пример могу предложить такие варианты – регистрация в рассылке, ввод сообщения в форум, гостевую книгу и т.д., ошибка открытия файла, организация обратной связи, опрос мнения читателей о размещенной статье и т.д. и т.п. Способов применить эту возможность РНР – масса, осталось разобраться, как это работает. Как всегда – просто! Синтаксис таков:  

Mail ( $email, "Введено сообщение", $str, "From: сообщение ");   

Конечно, перед этим соответствующие переменные должны быть введены либо вручную, либо с помощью формы (нужно следить за соответствием имен переменных в форме и в скрипте). При выполнении данной команды интерпретатор РНР пошлет письмо с текстом из переменной $str по адресу, указанному в переменной $email. Все остальное – служебная информация, которая может быть в некоторых случаях опущена за ненадобностью.

Для примера рассмотрим систему контроля за посетителями определенных страниц сайта. Такая возможность может понадобиться для анализа посещений определенных статей, страниц и т.д. Нам потребуется информация о посетителе, которая в РНР автоматически доступна через переменные окружения. Эту информацию мы будем отсылать самому себе на почтовый ящик. Только не переусердствуйте – каждое посещение такой страницы вызовет отправку письма, и ящик может оказаться переполненным. Особенно если поток посетителей будет большим. 

<?php
if (isset ($HTTP_X_FORWARDED_FOR)) 
{ 
$host = gethostbyaddr($HTTP_X_FORWARDED_FOR); 
} else { 
$host = gethostbyaddr($REMOTE_ADDR); } 
 
$ip=getenv('REMOTE_ADDR');
$date=date('d M Y, H:i:s');
$host1=gethostbyaddr("$ip");
 
$str=("
Дата - $date
Хост - $host
IP-адрес - $ip
---------------------");
mail( $email, "статистика", $str, "From:информация");
?>

Если Вы разместите на одной из Ваших страниц этот код РНР, информация о посетителе (это дата входа, хост и IP-адрес) будет в Вашем почтовом ящике. Еще можно прислать себе сообщение при возникновении ошибки (например, открытия файла) на сайте:

$filename = "data.txt"; 
$fp = @fopen($filename,"r"); 
if ( !$fp ) 
{ 
@mail( $email, "Ошибка!", "Ошибка открытия файла $filename !");
} 

Как обычно, можно поставить знак @, и если возникнет ошибка при отправке почты, сообщение об этом не будет выведено на экран. А можно просто проверить, ушло письмо или нет:  

if (@mail( $email, "Тест", $str)) 

{ … что сделать если письмо ушло … } 

else 

{ … что делать, если произошла ошибка отправки (не правильные 
настройки сервера, не доступен ящик, сайт и т.д.)  } 

Если в переменной $email указать несколько адресов, разделенных пробелами, информация будет разослана по всем указанным адресам. Это открывает простой путь к организации собственной, ни от кого не зависящей системы почтовых рассылок.

Автор: Андрей Кухарчик
Источник: www.php.virtualbrest.com

Ссылки по теме
Чтение почты через Web-интерфейс
Полезные скрипты на PHP
PHP и формы
Почтовые функции в РНР
Отправка электронной почты с помощью PHP
 

 
Интересное в сети
 
10 новых программ
CodeLobster PHP Edition 3.7.2
WinToFlash 0.7.0008
Free Video to Flash Converter 4.7.24
Total Commander v7.55
aTunes 2.0.1
Process Explorer v12.04
Backup42 v3.0
Predator 2.0.1
FastStone Image Viewer 4.1
Process Lasso 3.70.4
FastStone Image Viewer 4.0
Xion Audio Player 1.0.125
Notepad GNU v.2.2.8.7.7
K-Lite Codec Pack 5.3.0 Full


Наши сервисы
Рассылка новостей. Подпишитесь на рассылку сейчас и вы всегда будете в курсе последних событий в мире информационных технологий.
Новостные информеры. Поставьте наши информеры к себе и у вас на сайте появится дополнительный постоянно обновляемый раздел.
Добавление статей. Если вы являетесь автором статьи или обзора на тему ИТ присылайте материал нам, мы с удовольствием опубликуем его у себя на сайте.
Реклама на сайте. Размещая рекламу у нас, вы получите новых посетителей, которые могут стать вашими клиентами.
 
Это интересно
 

Copyright © CompDoc.Ru
При цитировании и перепечатке ссылка на www.compdoc.ru обязательна. Карта сайта.