![]() |
|
Модераторы: korob2001, ginnie |
![]()
|
|
| InstantX |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 2 Регистрация: 11.1.2006 Репутация: нет Всего: нет |
Здравствуйте! Помогите пожалуйста с гостевой книгой на языке perl, я нашёл урок по её созданию, он тут:
Организация гостевой книги Наша простая гостевая книга будет состоять из двух файлов: guestbook.pl и guestbook.html. Второй файл будет хранить записи, т.е. фактически он является файлом данных, а первый представляет собой программу на языке Perl для управления гостевой книгой. Приведем содержимое двух этих файлов и подробно прокомментируем его. Начальное содержимое файла guestbook.html (содержимое этого файла будет меняться, поскольку в него будут добавляться записи). <h3>Добавление записи в гостевую книгу</h3> <form method=post action=/cgi-bin/guestbook.pl> <p><input type=text name=name value='Ваше имя'></p> <p><textarea name=comment rows=5 cols=50>Комментарий</textarea></p> <p><input type=submit value='Готово!'> Файл guestbook.pl # Подключим модуль CGI.pm use CGI qw/:standard/; # Функция вывода части HTML-файла до раздела # данных sub outhead { print "<html>"; print "<head>"; print "<title>Простая гостевая книга</title>"; print "</head>"; print "<body>"; print "<h1>Гостевая книга</h1><hr>"; } # Функция вывода части HTML-файла после # раздела данных sub outtail { print "</body>"; print "</html>"; } # Функция замены HTML-тегов sub antihack { $_[0] =~ s/</</g; $_[0] =~ s/>/>/g; } # Основная программа # Если параметры имеются, дописываем их # в файл if (param()){ open GB, ">> guestbook.html"; $name=param('name'); antihack($name); $comment=param('comment'); antihack($comment); print GB "\n<p>"; $lt=localtime; print GB "\n$lt<br>"; print GB "\n<b>Имя:</b> $name<br>"; print GB "\n<b>Комментарий</b>: $comment"; print GB "\n<hr>"; close GB; } # В любом случае выводим содержимое файла print "Content-type:text/html\n\n"; &outhead; open GB, "< guestbook.html"; while (<GB>) { print $_;} close GB; &outtail; Я так понял что нужно первый код скопировать в созданный файл guestbook.html, а второй в guestbook.pl я сделал это, загрузил их в нужные директории установил права 755 на guestbook.pl, страница guestbook.html загрузилась успешно, в форме для написания комментариев я ввёл всё как надо для теста, нажимаю "Готово!" после этого ошибка "500 Internal Server Error!" вот не знаю что делать?! |
|||
|
||||
| Sheridan |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 102 Регистрация: 5.1.2006 Репутация: нет Всего: 1 |
1)Есть кнопка Код...
2)Если нужна гостевуха, то зачем мучаться , вот полно готовых скриптов Могу посоветовать вот эту работает вроде окей.... 3)Если хочется написать самому.... То вот пример того же на PhP 4)Если только на Пёрл, то простите, не в тему+) Это сообщение отредактировал(а) Sheridan - 11.1.2006, 03:19 --------------------
Гордыня предшествует падению |
|||
|
||||
| korob2001 |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2871 Регистрация: 29.12.2002 Репутация: 13 Всего: 61 |
Посмотри вот здесь, я приводил пример гостевой книги из одного .pl файла.
http://forum.vingrad.ru/index.php?showtopic=43044 Со своего примера ты можешь тоже сделать один .pl файл, только нужно его разбить на подпрограммы, а затем запускать по условию ту, которая нужна в данный момент. Только выкладывать в сеть не торопись эти примеры, они очень опасны. Модератор: Тему переместил в раздел "Perl: CGI программирование" Это сообщение отредактировал(а) korob2001 - 11.1.2006, 05:21 -------------------- "Время проходит", - привыкли говорить вы по неверному пониманию. "Время стоит - проходите вы". |
|||
|
||||
| InstantX |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 2 Регистрация: 11.1.2006 Репутация: нет Всего: нет |
Спасибо!!! Я попробую всё что вы мне посоветовали!
|
|||
|
||||
| Rezzonans |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 145 Регистрация: 21.4.2005 Репутация: нет Всего: нет |
Вообщем, если не возражаешь, я бы предложил тебе вот такой вариант гостевой:
Копируешь всё это дело в блокнот. Сохраняешь в файл, к примеру, guestbook.pl, копируешь в директорию с cgi-скриптами и назначаешь на этот файл права 755. После этого, твоя гостевая книга будет доступна по адресу http://твой_сервер.ru/cgi-bin/guestbook.pl При этом все сообщения сохраняются в файл user.txt, который автоматически создастся в директории с cgi-скриптами. И никаких замутов с html страничками. --------------------
Первый детектор лжи был собран из ребра мужчины. Впрочем, до сих пор, никаких изменений не притерпел |
|||
|
||||
| korob2001 |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2871 Регистрация: 29.12.2002 Репутация: 13 Всего: 61 |
Эту строку:
Нужно вообще удалить или закоментировать в рабочем скрипте. Эти сообщения полезны разработчику, а вот рядовому пользователю их видеть не нужно. А так же советую блокировать файл при открытии его для записи. -------------------- "Время проходит", - привыкли говорить вы по неверному пониманию. "Время стоит - проходите вы". |
|||
|
||||
| Rezzonans |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 145 Регистрация: 21.4.2005 Репутация: нет Всего: нет |
В смысле, каким образом блокировать файл? korob2001, покажи если можно
--------------------
Первый детектор лжи был собран из ребра мужчины. Впрочем, до сих пор, никаких изменений не притерпел |
|||
|
||||
| korob2001 |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2871 Регистрация: 29.12.2002 Репутация: 13 Всего: 61 |
Этим мы гарантируем, что не произойдёт одновременной записи в файл несколькими пользователями. Если этого не делать, то при одновременной записи в файл, данные могут круто повредиться, т.е. они наложатся друг на друга. Но это не значит, что если один человек заблокировал файл, то второй будет отшит. Будет создана очередь и как только файл освободится, то тот кто стоит в очереди точно так же заблокирует его, на время открытия. Вот здесь я как-то приводил пример кода, которым можно всё это наглядно увидеть в работе. http://forum.vingrad.ru/index.php?showtopi...=1&hl=fcntl -------------------- "Время проходит", - привыкли говорить вы по неверному пониманию. "Время стоит - проходите вы". |
|||
|
||||
| Rezzonans |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 145 Регистрация: 21.4.2005 Репутация: нет Всего: нет |
чёрт, как-то никогда об этом не задумывался. Спасибо, korob2001
--------------------
Первый детектор лжи был собран из ребра мужчины. Впрочем, до сих пор, никаких изменений не притерпел |
|||
|
||||
| korob2001 |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2871 Регистрация: 29.12.2002 Репутация: 13 Всего: 61 |
Да незачто.
Кстати, файл можно блокировать и не используя модуль Fcntl. Посмотри документацию perldoc -f flock, но лично я предпочитаю использовать Fcntl, который входит в стандартную библиотеку Perl. -------------------- "Время проходит", - привыкли говорить вы по неверному пониманию. "Время стоит - проходите вы". |
|||
|
||||
| rcdimon |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 766 Регистрация: 12.7.2004 Где: Москва Репутация: 1 Всего: 2 |
С базой данных на MySQL гостевушка сразу преобретает массу хороших функций и на много упрощается ее программирование
И никаких блокировок файла не надо Это сообщение отредактировал(а) rcdimon - 17.1.2006, 19:59 |
|||
|
||||
| korob2001 |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2871 Регистрация: 29.12.2002 Репутация: 13 Всего: 61 |
Согласен с тобой, но не всегда она доступна. -------------------- "Время проходит", - привыкли говорить вы по неверному пониманию. "Время стоит - проходите вы". |
|||
|
||||
![]()
|
| Правила форума "Perl: CGI программирование" | |
|
|
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, korob2001, sharq. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Perl: разработка для Web | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |