|
|
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
|