![]() |
|
Модераторы: korob2001, ginnie |
![]()
|
|
| Rezzonans |
|
||||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 145 Регистрация: 21.4.2005 Репутация: нет Всего: нет |
Народ, такая проблема. Написал гостевушку, работает вроде бы нормально. Не знаю как ограничить количество сообщений на странице.
файл gsscript.pl
файл htm.cfg
--------------------
Первый детектор лжи был собран из ребра мужчины. Впрочем, до сих пор, никаких изменений не притерпел |
||||
|
|||||
| korob2001 |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2871 Регистрация: 29.12.2002 Репутация: 13 Всего: 61 |
Да млин
-------------------- "Время проходит", - привыкли говорить вы по неверному пониманию. "Время стоит - проходите вы". |
|||
|
||||
| Guest |
|
|||
|
Unregistered |
Так что, идей ни каких?
|
|||
|
||||
| Guest |
|
|||
|
Unregistered |
Покажите на каком-нибудь простом примере. Я разберусь там
|
|||
|
||||
| korob2001 |
|
||||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2871 Регистрация: 29.12.2002 Репутация: 13 Всего: 61 |
Замечания по коду ( только не обижайся, это не для того, что бы тебя обидеть ):
1. Всегда используй прагму strict, я больше чем уверен, что там половина переменных вообще не нужны. 2. Пользуйся стандартным модулем CGI.pm, например для декодирования полей. 3. Почему нет проверки полей, например: регулярными выражениями? 4. Где ключь -T? Конечно он не обязателен, но желательно использовать его в каждой CGI программе. Что это за зверь, читай здесь: http://forum.vingrad.ru/index.php?showtopic=44245 5. Не имей привычки читать файл в массив, рано или поздно ты убъёшь оперативную память. Остальные замечания смотри в коментариях, их очень много. Вот тебе твой же код, только немного в другом формате и с встроенной, простейшей разбивкой по страницам( всё прокоментировано ). Согласись, его теперь намного проще понять.
Конфигурационный файл, в нём тоже было много ошибок. Так же читай кометрарии.
Только твой код очень опасен, просто находка для санитаров леса. ;)))) Ладно разберайся. Если будет что-то не понятно, пиши. Это сообщение отредактировал(а) korob2001 - 24.8.2006, 13:17 -------------------- "Время проходит", - привыкли говорить вы по неверному пониманию. "Время стоит - проходите вы". |
||||
|
|||||
| Rezzonans |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 145 Регистрация: 21.4.2005 Репутация: нет Всего: нет |
Спасибо большое, ща посмотрю
PS И ещё вопрос, чем это я оперативу убью? Массивом с сообщениями --------------------
Первый детектор лжи был собран из ребра мужчины. Впрочем, до сих пор, никаких изменений не притерпел |
|||
|
||||
| korob2001 |
|
||||||||||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2871 Регистрация: 29.12.2002 Репутация: 13 Всего: 61 |
strict - это прагма компилятора, если она указывается, то Perl ужесточается, например: Запрещается использование не объявленных переменных, так же подпрограмм и использование символических ссылок. Но так как подпрограмм у тебя нет и ссылок тоже, то тебя должна интересовать только такая форма записи:
Попробуй вписать её и ты будешь сильно удивлён насколько много у тебя ошибок. ;)))))
А вот проверку делать на JavaScript я тебе не советую. Почему? Читай следующюю тему, я уже устал повторять одно и то же. ;)))) http://forum.vingrad.ru/index.php?showtopic=65199&st=15
Ну это дело времени, не отчаивайся и покоряй и тогда поймёшь все его прелести, это совсем другой стиль программирования на Perl. Пример можешь посмотреть здесь (кстати, я там приводил, рабочий, пример гостевой книги на чистом CGI, можешь попробовать его запустить, может понравится ( All rights fucked up - пользуйся на здоровье ;))) ): http://forum.vingrad.ru/index.php?showtopic=43044
Угу, ты ведь фактически помещаешь весь файл в оперативную память. Представь как будет не хорошо когда твой файл будет очень сильно заполнен + твой сайт очень популярный и твою гостевуху часто посещают твои товарисчи, которых очень много. Вот тут и приходит на помощь построчное чтение файла, без использования каких либо массивов. Потому лучше сразу сделать чтение таким и никогда не загонишь в тупик опертивную память, каким бы огромным не был бы твой файл. Это сообщение отредактировал(а) korob2001 - 30.9.2005, 02:36 -------------------- "Время проходит", - привыкли говорить вы по неверному пониманию. "Время стоит - проходите вы". |
||||||||||
|
|||||||||||
| Guest |
|
|||
|
Unregistered |
Короб, мужик, ты меня выручаешь в который раз!
|
|||
|
||||
| korob2001 |
|
||||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2871 Регистрация: 29.12.2002 Репутация: 13 Всего: 61 |
Добавь просто ещё одно регулярное выражение, перед тем, которое меняет в твоём коде, все пробелы на
Вот посмотри пример и читай коментарии:
Заметь что там где было 2 пробела, так и вставилось 2 , там где был один пробел вставился 1 , а там где было 3 и более пробелов, они заменились только на 3 , если нужно сделать больше, то просто увеличь значение переменной $max_space. Вообще не понятно, зачем ты меняешь пробелы на ???? По нормальному нужно было бы обработать пробелы так:
Т.е. последним выражением, мы просто заменяем любое кол-во пробелов на 1 пробел, что вполне логично для текста в гостевой книге. Ну ладно, не буду тебя нагружать, сам решай как жить дальше. Это сообщение отредактировал(а) korob2001 - 30.9.2005, 13:05 -------------------- "Время проходит", - привыкли говорить вы по неверному пониманию. "Время стоит - проходите вы". |
||||
|
|||||
| Rezzonans |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 145 Регистрация: 21.4.2005 Репутация: нет Всего: нет |
Короб, привет, спасибо за материал, почти всё усвоил
Не подскажешь, каким образом? $form_data{'el'} =~ s/\s{$max_size}//g; пробовал вот так - не подходит. И кстати, вот ещё что, тока заметил, ты не знаешь символ двоеточия? Ну в смысле как бы специальный сивол типа < или  ? Иначе, если они проходят в теле сообщения.. - во дурдом! Вот походу почему каша получалась Это сообщение отредактировал(а) Rezzonans - 1.10.2005, 16:28 --------------------
Первый детектор лжи был собран из ребра мужчины. Впрочем, до сих пор, никаких изменений не притерпел |
|||
|
||||
| korob2001 |
|
||||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2871 Регистрация: 29.12.2002 Репутация: 13 Всего: 61 |
Не понял, ты хочешь обрезать стороку или просто выдать юзеру сообщение о том, что нельзя вводить сообщение больше $max_size?????
Если первое, то можно и не делать проверки с условным операторо if, просто обрезай стороку и загоняй её в файл:
Если же нужно выдать клиенту сообщение о том, что нельзя отправлять сообщение больше $max_size символов, тогда нужна проверка, как ты и показал:
Это сообщение отредактировал(а) korob2001 - 1.10.2005, 17:58 -------------------- "Время проходит", - привыкли говорить вы по неверному пониманию. "Время стоит - проходите вы". |
||||
|
|||||
| Rezzonans |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 145 Регистрация: 21.4.2005 Репутация: нет Всего: нет |
Ну конечно обрезать строку. Чёрт, мне же встречалась функция substr. Видимо всему виной моя невнимательность. Спасибо большое
--------------------
Первый детектор лжи был собран из ребра мужчины. Впрочем, до сих пор, никаких изменений не притерпел |
|||
|
||||
![]()
|
| Правила форума "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. |