#!/usr/bin/perl ######################################### # mY BILLBOARD v.1.0beta™ # # Copyright Elmar Mustaphin 1999-2000 # # written by Elmar Mustaphin # # URL: perl.webservis.ru # # E-mail: elmar@bugulma.oilnet.ru # # elmar@aport.ru # ######################################### ####КОНФИГУРАЦИЯ###### $mess = 9; #КОЛ-ВО_СООБЩЕНИЙ_НА_СТРАНИЦУ $cgi1 = "index.pl"; #КАК_ВЫ_ОБОЗВАЛИ_СКРИПТ $max_record_size = 1500; #ЛИМИТ_ДЛИНЫ_СООБЩЕНИЯ $max_word_lenth = 90; #ЛИМИТ_ДЛИНЫ_СЛОВА ################### if ($ENV{'REQUEST_METHOD'} eq "POST") { read(STDIN, $bufer, $ENV{'CONTENT_LENGTH'}); } elsif ($ENV{'REQUEST_METHOD'} eq "GET") { $bufer=$ENV{'QUERY_STRING'}; } else { &fatal_error; } @pairs = split(/&/, $bufer); foreach $pair (@pairs) { ($name, $value) = split(/=/, $pair); $name =~ tr/+/ /; $name =~ s/%([A-Fa-f0-9]{2})/pack("c",hex($1))/ge; $value =~ tr/+/ /; $value =~ s/%([A-Fa-f0-9]{2})/pack("c",hex($1))/ge; $value =~ s///g; $value =~ s/\;/;/g; $value =~ s/\Ўь//g; $value =~ s/\/>/g; $value =~ s/\\//g; $value =~ s/\n/
/g; $FORM{$name} = $value; } @months = ('Январь','Февраль','Март','Апрель','Май','Июнь','Июль','Август','Сентябрь','Октябрь','Ноябрь','Декабрь'); @days = ('Вс','Пн','Вт','Ср','Чт','Пт','Сб'); ($sec,$min,$hour,$mday,$mon,$year,$wday) = localtime(time); $year+=1900; if ($sec < 10) { $sec = "0$sec"; } if ($min < 10) { $min = "0$min"; } if ($hour < 10) { $hour = "0$hour"; } if ($mon < 10) { $mon = "0$mon"; } if ($mday < 10) { $mday = "0$mday"; } $date="$months[$mon] $mday, $year - $days[$wday] $hour:$min"; $action=$FORM{action}; $cat=$FORM{cat}; $page=$FORM{page}; $ip=$ENV{'REMOTE_ADDR'}; if ($action eq "add") {&add;} if ($cat ne "") {&view;} print "Content-type: text/html\n\n"; &htmlhead; print "
ДОСКА ОБЪЯВЛЕНИЙ
\n"; &navigator; print "
\n"; print "
\n"; &add_form; &htmlfoot; print ""; print ""; #################################################### sub navigator { print "
\n"; print "Предложение (МЕТАЛЛЫ) | \n"; print "Спрос (МЕТАЛЛЫ) |
\n"; print "Продам (РАЗНОЕ) | \n"; print "Куплю (РАЗНОЕ) |
\n"; print "Меняю (РАЗНОЕ) |
\n"; print "Услуги | \n"; print "
\n"; } sub add_form { print qq~
~; if ($cat eq "") { print qq~ ~; } else { print "\n" } print qq~
Выберите раздел \*
Ваше имя \*
Город \*
Адрес или телефон
Ваша домашняя страничка URL
Ваш E-Mail

Текст объявления не более $max_record_size символов \*
Слова в сообщений не более $max_word_lenth символов \*

ТЕМА СООБЩЕНИЯ \*

Пункты, помеченные \(\*\) должны быть обязательно заполнены
~; } sub messperpage { print "
\n"; print "\n"; print "
"; $all = int(($allmess-1) / $mess)+1; print "Страница: - "; for($i=1;$i <= $all;$i++) { $to=$i*$mess-$mess; $a=$page/$mess+1; if($a ne $i) { print " $i - ";} else { print " $i - ";} } print "
\n"; print "Всего объявлений $allmess
\n"; } sub viewmess { for($i=$page;$i<=$pageend;$i++) { ($text,$city,$name,$ip,$adres,$url,$mail,$date,$tema) = split(/Ўь/,$DATA[$i]);$f=$i+1;if ($tema eq "0") {$tema=$city;}; if($name ne "") { print "
 ($f) $tema ($city)\n"; print "
$text\n"; print "\n"; print "\n"; if ($adres eq "0") { $adres="";} print "\n"; print "\n"; print "\n"; if ($mail ne "0") { print "\n"; print "\n"; print "\n"; } if ($url ne "0") { print "\n"; print "\n"; print "\n"; } print "
Город: $cityАдрес (телефон): $adres
Автор: $nameДата: $date
E-Mail: $mail
URL: $url
\n"; } } } sub view { if ($cat eq "sale") {$name="Предложение (МЕТАЛЛЫ)";} if ($cat eq "purchase") {$name="Спрос (МЕТАЛЛЫ)";} if ($cat eq "change") {$name="Продам (НЕДВИЖИМОСТЬ)";} if ($cat eq "hsale") {$name="Куплю (НЕДВИЖИМОСТЬ)";} if ($cat eq "hpurch") {$name="Меняю (НЕДВИЖИМОСТЬ)";} if ($cat eq "hchange") {$name="Сниму (НЕДВИЖИМОСТЬ)";} if ($cat eq "snimu") {$name="Сдаю (НЕДВИЖИМОСТЬ)";} if ($cat eq "sdau") {$name="Продам (АВТО)";} if ($cat eq "znakom") {$name="Куплю (АВТО)";} if ($cat eq "soob") {$name="Меняю (АВТО)";} if ($cat eq "uslugi") {$name="Продам (РАЗНОЕ)";} if ($cat eq "rabota") {$name="Куплю (РАЗНОЕ)";} if ($cat eq "raznoe") {$name="Меняю (РАЗНОЕ)";} if ($cat eq "avto") {$name="Услуги ";} if ($cat eq "barter") {$name="Работа ";} print "Content-type: text/html\n\n"; &htmlhead; &navigator; print "
\n"; open(BOARD, "data/$cat.txt") || die {&error2}; @DATA=; close (BOARD); $allmess = @DATA; $pageend = $page+$mess-1; print "
$name
\n"; print "

\n"; &viewmess; print "

\n"; &messperpage; print "
\n"; print "
\n"; &add_form; &htmlfoot; print ""; print ""; exit; } sub add { $names=$FORM{names}; if($names eq "") { &error; } $city=$FORM{city}; if($city eq "") { &error; } $text=$FORM{text}; if($text eq "") { &error; }$tema=$FORM{tema};if($tema eq "") {&error;} if ($FORM{adres} ne "") { $adres=$FORM{adres}; } else{ $adres="0"; } if ($FORM{mail} ne "") { $mail=$FORM{mail}; } else { $mail="0"; } $mail="0" if (!($mail =~ /.*\@.*\..*/)); if ($FORM{url} ne "http:\/\/") { $url=$FORM{url}; } else { $url="0"; } $url="0" if (!($url =~ /.*\:.*\..*/ )); $text_len = length ($text); if ($text_len > $max_record_size) {&error;} if ($text=~/\S{$max_word_lenth,}/) { &error; } $STRING = join("Ўь",$text,$city,$names,$ip,$adres,$url,$mail,$date,$tema); open(BOARD, "+; @DATA=("$STRING\n",@DATA); seek(BOARD,0,0); print BOARD @DATA; close (BOARD); } sub htmlhead { open (HEAD, "header.txt"); @head = ; close (HEAD); foreach $lin (@head) { print "$lin"; } } sub htmlfoot { open (HEAD, "footer.txt"); @foot = ; close (HEAD); foreach $lin (@foot) { print "$lin"; } } sub error { print "Content-type: text/html\n\n"; &htmlhead; print "
\n"; print "

Ошибка

\n"; print "
  • Вероятно вы забыли заполнить поле \"Имя\", \"Город\", \"Тему сообщения\" или \"Сообщение\"
  • \n"; print "
  • Возможно ваше сообщение имеет длину более $max_record_size символов
  • "; print "
  • Может быть слова в сообщении содержат более $max_word_lenth символов
  • "; print "

    НАЗАД

    \n"; print "
    \n"; &htmlfoot; print ""; print ""; exit;} sub error2 { print "
    \n"; print "

    Ошибка

    \n"; print "Внимание! Произошла внутренняя ошибка в программе

    \n"; print "
  • Может вы не правильно вызываете Доску объявлений. Попробуй нажать сюда
  • \n"; print "
  • Возможно вы переименовали папку с базой данных объявлений. Папка должна называться DATA
  • \n"; print "
  • Вероятно, что файлам баз данных объявлений не задан CHMOD 777 (UNIX)
  • \n"; print "

    НАЗАД

    \n"; print "
    \n"; &htmlfoot; print ""; print ""; exit;} #################################################### ######################################### # mY BILLBOARD v.1.0beta™ # # Copyright Elmar Mustaphin 1999-2000 # # written by Elmar Mustaphin # # URL: perl.webservis.ru # # E-mail: elmar@bugulma.oilnet.ru # # elmar@aport.ru # #########################################