|
|
Ответов: 0
|
25-02-12 07:01
|
|
|
|
Ответов: 0
|
16-01-12 20:13
|
|
|
|
Ответов: 1
|
09-01-12 11:23
|
|
   Web - программирование
|
|
|
   Программирование под ОС
|
|
|
   Web - технологии
|
|
|
   Базы Данных
|
|
|
|
Web - программирование / PERL /
| |
| | |
Возможно вас заинтересует
|
|
Гостевая книга на Perl
Наиболее типичным примером программирования является Гостевая книга.
В этой статье мы с Вами напишем простенькую Гостевую книгу, записывающую данные в файл.
Наиболее типичным примером программирования является Гостевая книга.
В этой статье мы с Вами напишем простенькую Гостевую книгу, записывающую данные в файл. Для начала немного об самом скрипте, реализован он в виде одного файла.
Как он будет работать. При запуске скрипта будет выводиться список сообщений, а в конце будет форма для записи нового сообщения. Скрипт будет проверять наличие параметров запроса, если скрипт получает данные из формы, он их записывает в файл и производит редирект, на список сообщений.
#!/usr/bin/perl
use strict; # Директива для ужесточения стилистического контроля
use CGI; # подключаем модуль CGI
my $gb_path="gb.dat"; #Файл, где будут храниться записи
my $query=new CGI; # создаем объект CGI
#Если запрос нулевой то выводим список сообщений
if(!$query->param){
#Заголовок
print $query->header,$query->start_html('Записи в гостевой книге');
#Открываем файл
open(GB_DAT,"$gb_path")|| die("Невозможно открыть файл - $gb_path");
my @lst=<GB_DAT>; # Помещаем строки в массив
#Выводим данные
for(my $i=@lst-1;$i>=0;$i-=3){ # пробегаемся по всем строкам
# выводим имя автора как ссылку на его e-mail
print "<hr>Автор: <a href=mailto:$lst[$i-1]>$lst[$i-2]</a><br>";
# выводим сообщение
print "Сообщение:<br>$lst[$i]<br>";
}
#Закрываем файл
close(GB_DAT);
#Вывод формы записи сообщения
print <<HTML;
<form action=gb.cgi method=post>
<input type=hidden name=action value=add>
Ваше имя: <input type=text name=aname><br>
E-mail:<input type=text name=email><br>
Сообщение:<textarea name=mess></textarea><br>
<input type=submit value=Записать><input type=reset value=Очистить>
</form>
HTML
print $query->end_html; # конец html-документа
}else{
#Обработка данных из формы
#Открываем файл для дописи
open(GB_DAT,">>$gb_path")|| die("Невозможно открыть файл - $gb_path");
# Блокируем файл для записи другими пользователями
flock(GB_DAT,2)|| die("Невозможно заблокировать файл - $gb_path");
#записываем данные
print GB_DAT $query->param('aname')," ";# Имя записавшего
print GB_DAT $query->param('email')," "; # E-mail
my $message=$query->param('mess'); # считываем сообщение
$message=~tr/ / /; #Заменяем возвраты каретки на пробелы
print GB_DAT "$message "; # Записываем сообщение в файл
#Закрываем файл
close(GB_DAT);
#Перенаправляем пользователя на список
print $query->redirect('gb.cgi');
}
|
|
Данные записываются в файл указанный в переменной $gb_path. Для работы необходимо создать файл указываемый в gb_path и установить ему права на запись (для Unix).
Зачем нужна блокировка файла при записи?
функция flock блокирует файл для доступа другими пользователями, чтобы не произошло неразберихи при записи, если, допустим, к данному скрипту одновременно обратились несколько пользователей и один начал запись сообщения, когда как другой пользователь в это время тоже записывает сообщение, может возникнуть ситуация когда их записи перепутаются, какой бкдет результат, думаю, вы поняли. Для этого и блокируется файл.
Замечания по работе скрипта...
1. Скрипт носит демонстрационный характер и содержит минимум форматирования.
2. Цель написания данного скрипта заключается в демонстрации обработки форм и записи результатов в файл.
3. Данный скрипт проверен на Apache под операционными системами Win2000 и FreeBSD.
Последние статьи: Web - программирование / PERL /
| |
| | |
Большое количество World Wide Web приложений основано на использовании внешних программ, управляемых Web сервером... подробнее
|
Кол. просмотров: общее - 5805 сегодня - 1
|
|
|
Кол. просмотров: общее - 4898 сегодня - 1
|
|
Одним из популярнейших вопросов во всевозможных форумах является вопрос «Как загрузить файл на сервер?». А ведь на самом деле это не так сложно, как кажется на первый взгляд. И чтобы не было совсем легко – пусть скрипт, который приведен ниже еще и посылает этот файл по почте, в виде вложения... подробнее
|
Кол. просмотров: общее - 5316 сегодня - 1
|
|
В статье рассматривается один из основных подходов к генерации динамического контента в среде веб-приложений, а именно использование веб-сценариев и CGI, и применительно к ним, методы защиты исходных текстов от несанкционированного копирования и модификации... подробнее
|
Кол. просмотров: общее - 5005 сегодня - 0
|
|
Disclaimer: все приведённые примеры предназначены для демонстрации принципов, а вовсе не являются готовыми к использованию решениями... подробнее
|
Кол. просмотров: общее - 5042 сегодня - 1
|
|
|
|