Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Perl: разработка для Web > Запись кука юзеру


Автор: Гость_Константин 22.8.2004, 21:30
Всем привет! Прошу у вас помощи. Дело в том ,что я не дока в программировании, но поковырять исходники и настроить под себя (в основном дизайн) могу.Попался мне скрипт отличного чата. На Перле. Всё в нём хорошо, да вот одна беда - цвет,который юзер себе выбирает, не пишется к нему в кук. =( И при следующем заходе юзер опять получает цвет по умолчанию... Тоже самое и с ником... =((( Помогите,пожалуйста... Уж ковырялся я, ковырялся. Если кому нужно будет - отдам сам исходник чата. Заранее спасибо.

ЗЫ. ФАК по перлу и кукам здесь читал, но для меня это тёмный лес... =(

ЗЫЫ. И еще маленький вопрос, если не сложно - как заменить смайлик картинкой ?

Код
$message=~s/\s?(www\.\S+)/<a href=\"http:\/\/$1\" target=\"_blank\">$1<\/a>/g;


Что то типа этого ?

Спасибо.

Автор: korob2001 23.8.2004, 02:33
Цитата

ЗЫ. ФАК по перлу и кукам здесь читал, но для меня это тёмный лес...

Заходи http://forum.vingrad.ru/index.php?showtopic=1167, и скачай http://vingrad.ru/download/perl/cgi-ref.pdf перевода документации модуля CGI.pm. Это то, что нужно. Тебе понадобится Adobe Acrobat Reader, для того, что бы прочесть PDF файл. Затем прокрути скролл до 47 страницы, там описано очень доступно о куках. Спасибо админу.

Цитата

ЗЫЫ. И еще маленький вопрос, если не сложно - как заменить смайлик картинкой ?

Что ты подразумеваешь под смайликом? Если это - ;) smile.gif sad.gif , то примерно так:
Код

for ( $message ) {
       s/\:\)/<img src="smile.gif" border="0">/g;
       s/\;\)/<img src="nice.gif" border="0">/g;
       s/\:\(/<img src="sai.gif" border="0">/g;
}

Если ты имел ввиду что-то другое, опиши подробнее проблему.

Удачи.

Автор: Secandr 23.8.2004, 08:12
А чем тут тогда помочь можно?

Только переписать часть кода, а это я думаю в разде работа smile.gif Хотя может и найдудтся альтруисты.

Автор: Гость_Константин 23.8.2004, 11:27
2 korob2001:

Спасибо ) Именно это я и хотел (по поводу смайликов). А вот относительно записи куки - там в чате есть даже параметр, когда ник записывается юзеру в кук...

Код
#######Zapisat' uzeru nik v kuk#######

Типа этого. Пытался я туда присобачить и $color , но не выводится...

Можно я где-будь выложу 2 скрипта и Вы посмотрите. ?

А вот перевод документации я тоже читал... И когда вставляю что-нибудь в скрипт, у меня по большей части 500 ошибка... =( withstupid.gif

Автор: korob2001 23.8.2004, 12:32
Высылай на мыло [email protected]

Автор: Гость_Константин 23.8.2004, 16:05
Ушло.

Автор: Гость_Константин 24.8.2004, 12:56
Что-нибудь прояснилось ? =)

Автор: korob2001 24.8.2004, 16:41
Подождите немного. Вы прислали мне 6 файлов примерно по 500 строк каждый, притом все эти файлы не в читабильном виде. Я только переформатировал их в более понятный вид, сейчас буду решать проблему с куками.

Автор: korob2001 24.8.2004, 18:47
Сейчас разбираюсь с куками и заметил одну замечательную дыру в этом чате.
Попробуй в поле логин, при входе в чат ввести такую строку _admin_. Затем ты увидешь запрос на ввод логина и пароля админа, введи любой логин и любой пароль и ты попадёшь в раздел администрирования.
По идее после первого ввода логина и пароля админа прога должна была сохранить их в файл, для последующих проверок.
ОК, пробую зайти ещё раз, ввожу абсолютно другой логин и пароль и что ты думаешь? Я успешно попадаю в админовку. ;)
Короче суть этой басни такова, к администрированию может получить практически любой юзверь.

Код написан ужасно, стиль программирования ужасный. Поясню, что-бы не быть голословным:
1. use strict - отсутствует напрочь.
2. Практически все переменные - глобальные.
3. Практически весь чат построен на условиях if ( ... ) { ... } else { ... }, что сильно затрудняет чтение программы. Два файла переводил в читабельный вид целую ночь. Да и когда в программе используется такое кол-во условий, это считается плохим стилем.
4. За пол часа просмотра кода обнаружил 1 дыру. Интересно сколько их ещё?
5. Модули такие как CGI.pm отсутсвуют, а он был бы очень полезен, Но автор программы решил всё писать руками. Только не понятно зачем.

Вобщем, здесь не куки нужно настраивать а как минимум пол программы переписывать. Но если хочешь я конечно настрою куки, но на всю прогу времени к сожелению не имею.

Напиши стоит их вообще настраивать, как по мне так это лишняя трата времени. Чат - дырявый.

Автор: Гость_Константин 24.8.2004, 20:26
Спасибо, что так анализируешь мою проблему. Куки настраивать стоит. А глюк с админкой - это отдельная песня. Там в скриптине supervisor.pl нужно назначить персонажей-админов. Когда это не на локали (или когда админы назначены) всё пашет отлично. Проверено (чат уже бывал в сети.) То есть можно обращаться по адресу www.домен.ру/cgi-bin/chat/supervisor.pl и там далее уже по ходу пьесы. Пример рабочего чата на основе этих скриптов - www.streetlife.ru/chat

А так - огромное спасибо, серьёзно. с меня пивко )

Автор: Гость_Константин 24.8.2004, 20:28
Кстати , этому чату уже лет 8 =))))))) Это одна из первых работ автора. А так, то ,к чему он пришёл сейчас, можно глянуть на www.rhhz.ru

Автор: korob2001 25.8.2004, 12:51
Вообщем, что касается Perl'a вроде всё сделал. Кстати куки в этом чате используются только для того, что бы просто при следующем заходе в поле логин уже стояло значение _admin_, по умолчанию. Заметь что в чате предусмотрена возможность записи кук только при входе администратора, юзеру они не вписываются.
Что касается кук для сохранения настроек, то это наверное легче будет сделать с помошью JavaScript в файле color_set.htm

Что скажешь?

Автор: Гость_Константин 25.8.2004, 13:28
Скажу честно - не умею withstupid.gif Если поможешь, буду безмерно благодарен. Ну и пивко с меня так же =)

Автор: korob2001 25.8.2004, 14:20
Напиши конкретно, что ты хочешь сохранять в куках и для чего?

Автор: Гость_Константин 25.8.2004, 14:40
В куках хочу сохранять ник юзера, чтобы он не писал его каждый раз в поле, пароль (по возможности) и его настройки чата, т.е. цвет и время обновления страницы. Записывать в куки выбранный шрифт и размер не нужно, эта функция сё равно буит недоступна для юзверя.

Автор: Гость_Константин 29.8.2004, 00:48
Привет! Как процесс ? )

Автор: korob2001 2.9.2004, 22:15
Константин, я извиняюсь за такую задержку.

Просто мне нужно было отъехать не надолго. Доступа к инету не было, точнее был но только 5-10 минут.
Я не забыл. Сегодня всю ночь посвящу вашей проблеме.

Еще раз извиняюсь.

Денис

Автор: Guest 2.9.2004, 22:57
Привет! Да ничего страшного!

Спасибо огромное! Это первый форум програмеров, где мне помогают. Обычно говорят " ну вот ещё мы будем скрипты переписывать..."

Ещё раз спасибо!

Автор: korob2001 4.9.2004, 02:49
Отправил на мыло.

Автор: Гость_Константин 7.9.2004, 08:26
привет. Всё получил, но на локалке выдаёт ошибку 500. То есть вообще никак не работает. Ну я думаю это из-за моего апача. У меня стоит денвер базовый пакет без доп. модулей, голый. Сейчас жду,когда хост мой откроют,сразу в сети тест проведу.

Автор: korob2001 7.9.2004, 10:16
У тебя модуль CGI.pm установлен? Проверить это можно через командную строку, введя такую комманду:
C:\>perl -e "use CGI"
Или запусти такую тестовою программку:
Код

#!/usr/bin/perl -w
use strict;
use CGI;
use CGI::Carp qw( fatalsToBrowser );

my $cgi = new CGI;
my $tm = localtime;
print $cgi->header( -charset => 'Windows-1251' ),
       $cgi->start_html( -title => 'Test' ),
       $cgi->h1("Hello, I come from CGI.pm!"),
       $cgi->br(),
       $cgi->h2("Now: $tm"),
       $cgi->end_html();


Если не получится, дай знать.

Автор: Гость_Константин 8.9.2004, 09:12
Привет! На локалке не тестировал, но вот в сети тоже выдаёт 500-ю ошибку sad.gif

Автор: Папа Кастет 8.9.2004, 18:08
Привет. Я зарегился (гость Константин). По старому, на серваке ошибка 500...

Автор: korob2001 8.9.2004, 23:01
Ты пробывал запустить тестовую программу?
На пиши какая у тебя структура каталогов? Там расчитано на такую:
CGI скрипты - /cgi-bin/free/
Если у тебя скипты CGI лежат непосредственно в каталоге /cgi-bin/, то тебе нужно будет изменить пути к Perl файлам, в файле index.htm

Автор: Папа Кастет 9.9.2004, 10:45
тестовую прогу не пытался. Я сразу залил на сервак. Структура на скрваке и есть /cgi-bin/free , но тоже выдаёт ошибку

Автор: korob2001 9.9.2004, 11:59
Попробуй залить на сервер, тестовую программу. Нам сейчас нужно узнать установлен ли модуль CGI.pm на сервере. Положи файл в каталог cgi-bin/. Другими словами, если файл называется test.pl, то путь к нему должен быть примерно таким:
http://имя_сайта.ru/cgi-bin/test.pl

Если прога нормально запустится, дай знать. Тогда перейдём к установке чата.

Автор: Папа Кастет 9.9.2004, 16:49
окэ. сегодня к ночи залью

Автор: Папа Кастет 9.9.2004, 22:25
Залил тестовый файл. Выдаёт ошибку 500

Автор: GoodBoy 10.9.2004, 09:57
Проверь следующее:
1. Права должны стоять 755;
2. Файл должен быть сохранен в Юниксовой кодировке;
3. На сервере должно быть разрешено использовать в качестве CGI-скриптов файлы с расширением .pl.

Если не поможет, то покажи фрагмент файла error.log с сообщением об ошибке!!

Автор: Папа Кастет 10.9.2004, 10:39
Заработало. (забыл чимод выставить 755 withstupid.gif ) Но вот файл чата отказывается отзываться.

Автор: korob2001 10.9.2004, 12:30
Если все html файлы у тебя хранятся в каталоге /www/, то все файлы html, htm, shtml должны быть в каталоге /www/free/. Что качается Perl файлов, то они должны быть в каталоге /cgi-bin/free/, на них тоже выстави соответствуюшие права.
Для входа на гланую страницу путь должен быть примерно таким:
http://адрес_сайта/free.index.htm

Кстати, проверь пути в фале index.htm к файлам bazar.pl и login.pl .
Добавлено @ 12:39
Вот ещё что заметил. В твоих файлах был указан путь к perl так:
#!/usr/local/bin/perl
Если у тебя заработал тестовый пример, то там путь был таким:
#!/usr/bin/perl

В каждом файле с расширением .pl замени первую строку, на следующую:
#!/usr/bin/perl

И попробуй запустить снова.

Автор: Папа Кастет 10.9.2004, 19:22
Ё-моё! Конечно! Без локал... thumbs-up.gif

Автор: Папа Кастет 10.9.2004, 21:29
Не получается. И с параметром , который ты говорил (use CGI) и без него ошибка 500... Может проблема в том,что я заливаю 1 файл, к нему и обращаюсь... Хотя нет, там и к одному можно обратиться...

Автор: korob2001 10.9.2004, 22:19
Заливай все файлы в такой структуре:
HTML файлы - /каталог_с_html/free/
CGI файлы - /cgi-bin/free/

Они взаимосвязаны, для открытия чата обратись к файлу index.htm
Путь должен быть примерно таким: http://имя_сайта/free/index.htm

Автор: Папа Кастет 11.9.2004, 16:03
Забавная ситуация выходит. Скрипт базар.пл выдаёт 500 ошибку, скрипт логин.пл выдаёт тоже ошибу. Скрипт регистрацион.пл работает, скрипт супервизор.пл тоже работает... Не понятно...

Автор: korob2001 11.9.2004, 21:31
Цитата

Забавная ситуация выходит. Скрипт базар.пл выдаёт 500 ошибку, скрипт логин.пл выдаёт тоже ошибу. Скрипт регистрацион.пл работает, скрипт супервизор.пл тоже работает... Не понятно...

А ты ничего не удалял из тех файлов которые не работают?

Автор: Папа Кастет 12.9.2004, 12:00
Неа... Всё специально из архива взял... Из всех файлов удалил только локал из путей.

Автор: korob2001 12.9.2004, 12:49
На каком хостинге ты хостишся? Дай адрес, я почитаю правила пользования хотингом.

Автор: Папа Кастет 12.9.2004, 14:04
www.arbatek.ru

Автор: korob2001 12.9.2004, 23:04
У тебя хост на базе Windows или Unix?

Автор: Папа Кастет 13.9.2004, 16:04
Юникс-хостинг

Автор: korob2001 13.9.2004, 23:56
Уже написал в службу поддержки, но ответа пока не получил.

Автор: Папа Кастет 14.9.2004, 09:35
у них это долго =))) Лучше стукнись в асю к ним 312326498. Это типа как круглосуточный саппорт =)))

Автор: korob2001 14.9.2004, 17:20
Туда и написал, ответа нет. Сегодня напишу ещё раз.

Автор: Папа Кастет 14.9.2004, 18:02
А что написать ? Я у них в контакте есть, может напишешь мне мессагу,а я им перекину

Автор: Папа Кастет 17.9.2004, 09:43
молчит арбатек ? sad.gif

Автор: korob2001 27.9.2004, 15:49
Молчит. Придётся немного подождать. sad.gif Переехал от жены, теперь пока сижу без инета. Скоро установят, сказали в течении месяца.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)