ЄЙ-!
■РнкольНый
фо
ум
Дмитрий aka Error Г.
Г
Наш форум на РНР будет состоять из двух страниц и одного файла для записи новых сообщений.
Н
ачнем со страницы форума — как и полагается, назо-
вем ее forum.php.
< h tm l>
< head>
< t it le > f o r u m _ t e s t .
. . < / t it l e >
< /h ead >
< body>
« fo rm a c t io n = " f r o b o t . p h p " m e th o d = p o s t>
И м я : & n b s p ; « in p u t t y p e = t e x t m a x le n g th = 3 2
nam e= usm m > <br>
E - m a il: & n b s p ; « in p u t t y p e ^ t e x t m a x le n g th = 4 8 n a m e = u s-
r m a il x b r >
W eb : & n b s p ; < in p u t t y p e = t e x t m a x le n g th = 4 8
n a m e = u s r s it e w a lu e = " h t t p : //"> < b r>
Ваш т е к с т : < br>
« t e x t a r e a m a x le n g th = 2 0 4 8 c o ls = 5 0 r o w s =12
n a m e = u s r te x t>
« / t e x t a r e a x b r x i n p u t t y p e = s u b m it v a lu e = " Д о б а -
в и т ь " >
< /fo rm >
< /b o d y>
< /h tm l>
С помощью приведенного выше кода мы выводим на эк-
ран форму для заполнения имени, мыла, web-страницы и
собственно сообщения пользователя. Параметр
a c t i o n
в
тэге
< form >
указывает, куда нужно отправлять данные, вве-
денные пользователем для обработки. Здесь-то и вырисо-
вывается на горизонте второй файл с именем f_.robot.php. Его
задача такова: получйть данные с первой страницы, обра-
ботать их и сохранить в отдельном файле с другими сооб-
щениями. Итак, в/РНР для получения значения переменной
формы нужно прописать
$ v a lu e = $ H T T P PO ST V A R S
[ '
fo r m _
v a l u e ' ] ,
где
f o r m _ v a lu e
— это имя переменной в форме,
а
é v a lu e
— переменная, которой присваивается значе-
ние, введенное в вышеупомянутую форму. Обратите вни-
мание, что ВСЕ переменные в РНР начинаются с «бакса»,
то бишь с $.
Дальше мы проверим, ввел ли пользователь свой ник, и
если не ввел (такие бывают), то отругаем его за это. Прове-
рим, введены ли мыло и адрес сайта, но уже ругать не бу-
дем, так как он может быть застенчивым ©. Дальше форми-
руем сообщение, ставим дату и сохраняем в файл forum.list.
На всякий случай скажу, что имя совершенно случайное ©.
Наша страница:
«?
$nam e= $HTTP_PO ST__VARS [ 'u s r n m ' ] ;
$ e _ m a il= $ H T T P _ P O S T V A R S [ 'u s r m a i l ' ] ;
$ s ite = $ H T T P _ P O S T V A R S [ ' u s r s i t e ' ] ;
$ te x t= $ H T T P _ P O S T V A R S [ ' u s r t e x t ' ] ;
if ( ! $ n a m e ) {
//проверка имени
e c h o " « f o n t c o lo r = # f f 0001> «Ь> О ш ибка1 Вы н е в в е л и
с в о е и м я ! В е р н и т е с ь « а
h r e f = ' J a v a S c r i p t :
history, back
( ) '> н $ з а д « /а > и и с -
npaBbTe.«/bx/font>";
//е сл и нет, ругаем.
..
e x i t ;
//.
..и завершаем сценарий
}
i f ( $ s it e = = " h t t p : / / " ) {
//проверка наличия сайта
$ s it e = " " ;
//е сл и нет ничего нового, оставляем пустым
}
s w it c h ( $ e _ m a il) { / / s w i t c h - в е т в л е н и е
c a s e " " :
$ m a iln a m e = $ n a m e ;
//е сл и п усто, $rna і 1 name - $ name
b r e a k ;
d e f a u lt
: / / в ином случае
$ m a iln a m e = " « а
h r e f = 'm a i l t o : " . $ e _ m a i l $ n a m e . " < / a > ";
>
$ f o = f o p e n ( " f o r u m . li s t " , " г " ) ;
//открываем
forum, l i s t для чтения
$ l i s t = f g e t s ( $ f o )
; //сохраняем ere содержимое в $ lis t
f c l o s e ( $ f o )
; //закры тие файла
$ fw = fo p e n ( " f o r u m .1 i s t " , " w " ) ; / / о т к р ы т и е д л я ч т е н и я
$ m e s s a g e = " « b r
/> < Ь > ". $ m a iln a m e ."< /b > & n b s p ; & n b s p ;& n b s p ; « a
h r e f = ' " . $ s i t e . " ' t a r g e t = '_ b l a n k '> " . $ s i t e . "< /a > & n b -
s p ; fen b sp ; feh b sp ; < і » Д о б а в л е н о B & n b s p ; " . d a t e ( 'H : і , j S
F ' ) . " « / i x b r / x h r w id t h = 8 0 % x b r > " . $ t e x t . " « b r x h r
w id th = 8 0 % > ". $ l i s t ;
//формирование сообщения в $mes-
sage
f p u t s ( $ f w , $ m e s s a g e )
; //зап и сь в файл
f c lo s e ( $ f w ) ; / / з а к р ы т и е
?>
« s c r i p t la n g u a g e = " J a v a S c r ip t " >
lo c a t io n . r e p la c e ( " f o r u m . p h p " ) / / н а з а д к ф орме
</ s c r i p t »
Объясню не прокомментированные ранее моменты. При
проверке имени использовался оператор e x it. Он нужен
для аварийной остановки исполнения сценария. Ветвление
s w itc h сравнивает переменную $e_m ail с предлагаемыми
в case'ax. В данном случае сравниваем с «пустотой». После
d e fa u lt выполняется код, если ни один кейс не подошел. По-
сле каждого кейса должен стоять break, иначе выполнятся
■••все последующие кейсы в обнимку с дефолтом, без оглядки
на условия. Теперь откроем файл и прочитаем его. Закроем
и заново откроем, теперь уже для записи. В переменной
Çmessage сохраняем сообщение, как нам нужно. В конец
вставляем содержимое файла до вставки, чтобы новое со-
общение отображалось в самом верху. Функция d a te ( 'H : i,
j S F ' ) показывает нам время и дату. Дальше записываем
файл начисто. После окончания РНР я вставил небольшой
скрипт на JavaScript, который возвращает пользователя на
forum.php, если все прошло гладко, lo c a tio n .re p la c e ( ) хо-
рош тем, что не оставляет следов в истории посещений, и
если пользователь нажмет на кнопку «Назад», он не попа-
дет на эту страницу.
Осталось в папке с форумом создать файл forum.list. Мож-
но было бы и закончить повествование, но ведь еще нужно
где-то отображать эти сообщения! В файле forum.php после
</forum > допишем следующие строки:
< ?p h p
$ f o = f o p e n ( " f o r u m . li s t " , " г " ) ; /
/открытие для про-
чтения
i f
(!
$ f o )
{ //если проблемы с открытием
e c h o " « f o n t c o lo r = # f f 0 0 0 1 > 0 ш и б ка д о с т у п а к б а -
з е ! ! ! < / fo n t > " ;
}
e ls e {
$ t e x t = f g e t s ( $ f o ) ;
e c h o " < b r / > ". $ t e x t ;
}
fc lo s e ( $ fo ) ;
//закрываем
?>
Здесь появился фрагмент, проверяющий наличие оши-
бок при открытии. В предыдущем листинге эта функцио-
нальность отсутствует. На скриншоте изображен форум в
работе.
предыдущая страница 34 Мой Компьютер 2005 03 читать онлайн следующая страница 36 Мой Компьютер 2005 03 читать онлайн Домой Выключить/включить текст