|
ru.cgi.perl- RU.CGI.PERL ------------------------------------------------------------------ From : Vasilii Piskunov 2:5069/20.7 28 May 2001 19:31:53 To : All Subject : Неработает скрипт на апаче :Е -------------------------------------------------------------------------------- [SKIP] ;= ) Посмотрите плиз, и скажите рабочий он или нет (в мыльницу). ======== #!/usr/bin/perl ######################################### # Copyright WM 2000 # # Все права зашищены(2000). # # Chat v.1 # # По всем вопросам - Миша # # email: smisha@mail.ru # # url: http://cgi.superbest.net # ######################################### $chat_name = "Чат CGI-BIN"; # название чата $update = "10"; # через сколько секунд должно обновляться окно $chat_window_bg = "#ffffff"; # фон страницы, где выводятся записи $options_window_bg = "#ffffff"; # фон страницы, где вы пишите сообщение $show_mes = 30; # показывать сообещний(1-100) $killtags = 1; # убивать теги $temp=$ENV{'QUERY_STRING'}; @pairs=split(/&/,$temp); foreach $item(@pairs) { ($key,$content)=split (/=/,$item,2); $content=~tr/+/ /; $content=~ s/%(..)/pack("c",hex($1))/ge; $FORM{$key}=$content; } if($killtags eq 1) { $FORM{'chat'} =~ s/</</g; $FORM{'chat'} =~ s/>/>/g; $FORM{'nick'} =~ s/</</g; $FORM{'nick'} =~ s/>/>/g; } $timeout = time; open (LOG,"+<log.txt"); flock(LOG,2); @log = <LOG>; foreach $log (@log) { @log_params = split(/\|\|/,$log); $timelog = $timeout - $log_params[2]; if ($timelog > 150) { $log = ""; open(CHAT,"chat.txt"); flock(CHAT,2); @chat = <CHAT>; close(CHAT); $str = "||Системное сообщение||black||<i>$log_params[1] вышел из чата.</i>||\n"; push(@chat,$str); $chat_many = @chat; if ($chat_many > 99) {$chat[0] = "";} open(CHAT,">chat.txt"); flock(CHAT,2); print CHAT @chat; close(CHAT); } $a++; } seek (LOG, 0, 0); truncate (LOG,0); print LOG @log; close (LOG); $link = "<a href=http://cgi.superbest.net target=_top><img src=http://cgi.superbest.net/images/litlogo.gif width=88 height=31 border=0 alt=\"Бесплатные cgi скрипты\"></a>"; if($ENV{'QUERY_STRING'} eq '') {&login;} elsif($FORM{'action'} eq 'enter') {&enter;} elsif($FORM{'action'} eq 'chat') {&chat;} elsif($FORM{'action'} eq 'options') {&options;} sub login { print "Content-Type: text/html\n\n"; print "<html>\n"; print "<head>\n"; print "<title>$chat_name</title>\n"; print "<style>\n"; print "INPUT, SELECT, BODY, TD {font-family: Tahoma; font-size: 11}\n"; print "</style>\n"; print "</head>\n"; print "<body>\n"; print "<center>\n"; print "<font face=Tahoma size=2>Введите пожалуйста ваш ник, чтобы войти в чат $chat_name.\n"; print "<table>\n"; print "<form action=chat.cgi method=GET>\n"; print "<tr><td>Hик:</td><td><input type=hidden name=action value=enter><input type=text name=nick size=10></td></tr>\n"; print "<tr><td>Цвет:</td><td><select name=color>"; print "<option value=black>черный</option>"; print "<option value=green>зеленый</option>"; print "<option value=yellow>желтый</option>"; print "<option value=blue>голубой</option>"; print "<option value=red>красный</option>"; print "</select></td></tr>"; print "<tr><td colspan=2><input type=submit value=Войти></td></tr>\n"; print "</form></table></font>\n"; print "</center>\n"; print "</body>\n"; print "</html>\n"; exit; } sub enter { if ($FORM{'nick'} eq '') { &error('Вы не ввели свой ник.'); } $nick = $FORM{'nick'}; $time = time; open(LOG,"log.txt"); @log = <LOG>; foreach $log (@log) { if($log =~ /^\|\|$nick\|\|/) { $found = 1; } } close(LOG); if (!($found)) { open(LOG,">>log.txt"); print LOG "||$nick||$time||\n"; close(LOG); open(CHAT,"chat.txt"); flock(CHAT,2); @chat = <CHAT>; close(CHAT); $str = "||Системное сообщение||black||<i>$FORM{'nick'} вошел в чат.</i>||\n"; push(@chat,$str); $chat_many = @chat; if ($chat_many > 99) {$chat[0] = "";} open(CHAT,">chat.txt"); flock(CHAT,2); print CHAT @chat; close(CHAT); } print "Content-Type: text/html\n\n"; print "<html>\n"; print "<head>\n"; print "<title>$chat_name</title>\n"; print "</head>\n"; print "<frameset rows=\"*,70\" border=0 frameborder=0>\n"; print "<frame name=\"chat\" noresize src=\"chat.cgi?nick=$nick&action=chat\">\n"; print "<frame name=\"options\" src=\"chat.cgi?nick=$nick&action=options&color=$FORM{'color'}\">\n"; print "<noframes>\n"; print "<body>\n"; print "<font face=Tahoma size=2>К сожалению, ваш браузер не поддерживает фреймы, необходимые для общения.</font>\n"; print "</body>\n"; print "</noframes>\n"; print "</frameset>\n"; print "</html>\n"; exit; } sub chat { &update; open(LOG,"log.txt"); @members = <LOG>; close(LOG); foreach $member (@members) { @member_params = split(/\|\|/,$member); push(@online,$member_params[1]); } open(CHAT,"chat.txt"); @chat = <CHAT>; close(CHAT); @chat = reverse @chat; $end = $show_mes - 1; $end = @chat - 1 if scalar(@chat) < 30; foreach $chat (@chat[0..$end]) { @chat_params = split(/\|\|/,$chat); $str = "$chat_params[1]: <font color=$chat_params[2]>$chat_params[3]</font>"; push(@text_chat,$str); } print "Content-Type: text/html\n\n"; print "<html>\n"; print "<head>\n"; print "<meta http-equiv=\"Refresh\" CONTENT=\"$update\; URL=chat.cgi?action=chat\&nick=$FORM{'nick'}\">"; print "<style>\n"; print "BODY {font-family: Tahoma; font-size: 12}\n"; print "</style>\n"; print "</head>\n"; print "<body bgcolor=$chat_window_bg>\n"; print "<b>в On-line'е: "; foreach (@online) { print "$_, "; } print "</b><br>\n"; print "<br>\n"; foreach $str (@text_chat) { print "$str\n<br>\n"; } print "</body>\n"; print "</html>\n"; exit; } sub options { &update; if($FORM{'chat'} ne '') { open(CHAT,"chat.txt"); flock(CHAT,2); @chat = <CHAT>; close(CHAT); $str = "||$FORM{'nick'}||$FORM{'color'}||$FORM{'chat'}||\n"; push(@chat,$str); $chat_many = @chat; if ($chat_many > 99) {$chat[0] = "";} open(CHAT,">chat.txt"); flock(CHAT,2); print CHAT @chat; close(CHAT); } print "Content-Type: text/html\n\n"; print "<html>\n"; print "<head>\n"; print "<style>\n"; print "INPUT, SELECT {font-family: Tahoma; font-size: 11}\n"; print "</style>\n"; print "</head>\n"; print "<body bgcolor=$options_window_bg>\n"; print "<center>\n"; print "<form action=chat.cgi method=GET>\n"; print "<input type=hidden name=action value=options>"; print "<input type=hidden name=nick value=$FORM{'nick'}>"; print "<input type=text name=chat size=45>"; print "<input type=hidden name=color value=$FORM{'color'}>"; print "<input type=submit value=Сказать><br>$link\n"; print "</form></font>\n"; print "</center>\n"; print "</body>\n"; print "</html>\n"; exit; } sub update { open (LOG,"+<log.txt"); flock(LOG,2); @log = <LOG>; $a=0; foreach (@log) { @log_params = split(/\|\|/,$log[$a]); if ($log_params[1] eq $FORM{'nick'}) { $log_params[2] = time; $log[$a] = join("\|\|",@log_params); } $a++; } seek (LOG, 0, 0); truncate (LOG,0); print LOG @log; close (LOG); } sub error { $err = $_[0]; print "Content-Type: text/html\n\n"; print "<html>\n"; print "<head>\n"; print "<title>$chat_name ошибка</title>\n"; print "<style>\n"; print "BODY {font-family: Tahoma; font-size: 11}\n"; print "</style>\n"; print "</head>\n"; print "<body>\n"; print "<center>\n"; print "<font size=2 face=Tahoma>$err</font>\n"; print "</center>\n"; print "</body>\n"; print "</html>\n"; exit; } --- WP/95 Rel 1.78E (215.0) Reg. * Origin: Кто не курит и не пьет, скоро в армию пойдет.(с) Я (2:5069/20.7) Вернуться к списку тем, сортированных по: возрастание даты уменьшение даты тема автор
Архивное /ru.cgi.perl/27897c756b05.html, оценка из 5, голосов 10
|