![]() |
Модераторы: korob2001, ginnie |
![]() ![]() ![]() |
|
int19h |
|
|||
Новичок Профиль Группа: Участник Сообщений: 7 Регистрация: 5.9.2009 Репутация: нет Всего: нет |
Добрый день всем.
Как правило, сразу представлюсь - начинающий, неделю в перле, но кроме него больше ничего не понравилось почему то. Купил кучу справочников, но понял, что ничего не понял. Остается только уповать на уже опытных, что подскажут куда прыгать и где грабли... Вообщем поставил перед собой одну задачу. Задачу реализовываю через Денвер, то есть сугубо на компе, локально. Сделал вот что. - на html форму, в которую вписывает свои данные тот, кто регистрируется - данные отсылаются на register.cgi, где обрабатываются и записывыаются в файл 123456789.txt в виде "name=Иван family=Иванов [email protected] vozr=40 sex=мужской" и т д. Имя файла генерерирую через время UNIX на момент регистрации (time()) Всё это пашет, данные корретно переносятся в CGI и прекрасно пишутся в файл. То есть имеем - форму - CGI обработчик - записанный файл. Дальше что я хотел сделать. Имеем как бы файл, который лежит образно тут http://local.ru/123456789.txt с данными в виде текста (выше написал). Я хочу сделать (параллельно с образованием текстового файла) генерацию 123456789.pl, который должен либо парсить либо просто открывать файл 123456789.txt и оттуда брать данные. То есть пользователь кликает по 123456789.pl и получает: 1. имя: Иван 2. фамилия: Иванов 3. Е-маил: [email protected] и т.д. и т.п. Причем хотелось бы, чтоб эти данные, которые были изначально введены пользователем, были обьявлены как переменные для будущих обработок в других целях Сам html я в перле разберусь. У меня проблема именно в регулярных выражениях, причем сильная, ибо ну ничерта я в этих черточках слешах и ключах не понимаю. Два варианта: либо парсером через веб-ссылку GET ("") либо через OPEN () '<' Кто может плиз дайте примерные строки с регулярками для этого случая... PS register.cgi, через который обрабатывают вводные данные и пишу текстовый файл:
Добавлено @ 21:49 Как бы дополню картину. В момент генерации вводных данных нового аккаунта будут генерироваться два файла - текстовый, где будут храниться данные аккаунта - веб ***.pl, который будет отображать эти данные. Вот я и хочу, чтоб веб ***.pl сразу считывал данные из этого текстового файла. Сам текстовый файл с данными будет как бы основным хранилищем данных аккаунта. Это сообщение отредактировал(а) int19h - 5.9.2009, 21:51 |
|||
|
||||
sir_nuf_nuf |
|
||||||||||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 920 Регистрация: 6.1.2008 Репутация: 14 Всего: 31 |
Угу... перл - чем то похож на религию. Вы выбрали не самый плохой язык =) поздравляю =)
Немного не в тему, но.. perl != CGI. Perl (в отличии от PHP) изначально проектировался как универсальный язык, а не только для веб-разработки.
Опасное решение. А если два пользователя попытаются регистрироваться одновременно ? Используйте тогда хотя бы Time::HiRes - вероятность пересечения снизите. Учите... через пару дней обычно настает просветление.
А вот это совсем не правильно !! У вас будет N файлов с абсолютно одинаковой логикой. Вам нужен одна программа, которая парсит эти файлы, а id принимает на вход как параметр. URL будет выглядеть примерно так:
Теперь ответ по сути: как распарсить такой файл:
Однако следует заметить, что ваш способ хранения не надежен. если например в поле имя вести "name_sex=123", то структура файла будет нарушена. Вам нужно как-то экранировать данные при записи в файл |
||||||||||||
|
|||||||||||||
int19h |
|
|||
Новичок Профиль Группа: Участник Сообщений: 7 Регистрация: 5.9.2009 Репутация: нет Всего: нет |
огромное спасибо за поправки и советы.
Сейчас займусь изучением вашего примера. По поводу
По поводу "name_sex=123" - у меня там не текстовое поле, а "radio", то есть там выбор: либо "мужской" либо "женксий" Это сообщение отредактировал(а) int19h - 6.9.2009, 00:48 |
|||
|
||||
sir_nuf_nuf |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 920 Регистрация: 6.1.2008 Репутация: 14 Всего: 31 |
Если кто захочет завалить вашу систему - он не ограничится браузером. с помощью LWP::UserAgent (например) можно отправить произвольный запрос на ваш сервер. Поэтому должно быть 2 уровня защиты (минимум) 1) на уровне HTML и JavaScript валидации - это скорее для пользователя, что бы он видел, когда лажу ввел. 2) на уровне perl. Что бы отсечь попытки взлома. |
|||
|
||||
sir_nuf_nuf |
|
||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 920 Регистрация: 6.1.2008 Репутация: 14 Всего: 31 |
Так... первое с чего бльшинство людей начинают - это использование модуля CGI Вот так примерно выглядит получение параметра id из URL или из POST.
Поскольку вы начинающий - советую не привыкать к модулю CGI - напрямую его сейчас редко кто использует. Посмотрите на HTML::Mason - это шаблонизатор, который делает за вас кучу работы. Фактически это замена PHP. |
||||
|
|||||
int19h |
|
|||
Новичок Профиль Группа: Участник Сообщений: 7 Регистрация: 5.9.2009 Репутация: нет Всего: нет |
Огромное спасибо за помощь и разъяснения.
Я как раз таки в CGI и ударился, хотя тоже чувствовал, что не совсем правильно пошел. По поводу Масона как раз сейчас читаю книжечку "Внедрение Perl в HTML с помощью Mason" А вообще без учителя никак, зачастую книги по темам пишутся так, что содержание понимает тот, кто написал... А нам надо буквально чтоб тыкали носом куда надо... =) Спасибо еще раз. |
|||
|
||||
![]() ![]() ![]() |
Правила форума "Perl" | |
|
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, korob2001, sharq. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Perl: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |