#!/usr/bin/perl $language=$lang=$page_id=$zayavka_id=$korzina=''; $privet=0; require "config.pl"; $session=$FORM{'session'}||&get_cookie_session||''; if ($pay_system && $FORM{'pay'}) { require "pay_stat.pl"; &stat_pay; } if ($FORM{'page_id'}) { $page_id="$FORM{'page_id'}"; } my @sessions=(); my $modified=0; @sessions=glob("*usess"); if(@sessions) { foreach (@sessions) { $modified=-M; if ($modified*24*60*60 > $max_user_session_time) { unlink; } } } $korzina=$korzina||&get_cookie('ws_korzina')||$FORM{'korzina'}||$korzina_sess||''; if ($session) { my $expire_time=''; my $korzina_sess=''; if (-e "$session.usess") { open (SESSION, "$session.usess") || die print "$head Не могу считать сессию $!"; $expire_time=; chomp $expire_time; $korzina_sess=; chomp $korzina_sess; $lang=; $lang=$FORM{'switch_lang'}||$FORM{'language'}||$lang||$default_lang; chomp $lang; my $num=; close (SESSION); if ( $expire_time < time() ) { unlink ("$session.usess"); goto MAKE_SESSION; } else { open (SESSION, ">$session.usess") || die print "$head Не могу записать в сессию $!"; print SESSION "$expire_time\n$korzina\n$lang\n$num\n"; close (SESSION); } } else {goto MAKE_SESSION;} } else { $lang=$FORM{'switch_lang'}||$FORM{'language'}||$default_lang; MAKE_SESSION:$session=time()."_".$ENV{'REMOTE_ADDR'}; my $will_expire=time()+$max_user_session_time; open (SESSION, ">$session.usess") || die print "$head Не могу создать сессию $!"; print SESSION $will_expire."\n"; print SESSION $korzina."\n"; print SESSION $lang."\n"; print SESSION "0\n"; $privet=1; $page_id=''; close (SESSION); &count; &set_cookie_session; } print "Content-type:text/html; charset=windows-1251; \n\n"; if($lang) { if (-e "$lang") { require "$lang"; $language="$lang";} } else { if(($default_lang)&&(-e "$default_lang")) { require "$default_lang"; $language="$default_lang";} else { print "Не могу найти языковой модуль"; exit; } } $act=''; $act=$txt{'Catalog'}||''; sub count { &data_time; my $now_date="$day.$mon.$year"; open(COUNTER,"; &flocking(COUNTER,8); close(COUNTER); my $new=1; my @y=(); foreach (@dates) { if(!(/^-*\d*-*$/)) { @d=split(/=/);@y=split(/\./,$d[0]); if ($d[0] eq $now_date) { $d[1]++; push (@new_dates, "$now_date=$d[1]\n"); $new=0; } else { push (@new_dates,$_); } } else {push (@new_dates, $_); } } if ($new==1) { if ($year==$y[2]) { push (@new_dates, "$now_date=1\n"); } else { push (@new_dates, "-----$year-----\n", "$now_date=1\n"); } } open(COUNTER,">counter_tmp.log")||warn print "Не могу открыть на запись tmp-счетчик $!"; &flocking(COUNTER,2); print COUNTER @new_dates; &flocking(COUNTER,8); close(COUNTER)||warn print "Не могу записать в tmp-счетчик $!"; rename ("counter_tmp.log","counter.log")||warn "Cannot rename counter_tmp $!"; } if ( exists($FORM{'podpiska_email'}) ) { if ($FORM{'podpiska_email'} eq "") { $alert="$txt{'subscribe_email'}"; goto HTM;} else { &check_email($FORM{'podpiska_email'}); open(BASA_PODPISKA, "<$bases_dir/$podpiska_basa") || die print "Не могу открыть Подписку на чтение $!"; &flocking(BASA_PODPISKA,2); @mail_list=; &flocking(BASA_PODPISKA,8); close (BASA_PODPISKA); if ($FORM{'podpiska_name'} eq '') { $FORM{'podpiska_name'}="$txt{'subscribe_name'}"; } $crypt_email=$FORM{'podpiska_email'}; $crypt_email=~s/\@/=AT=/; $crypt_email=~s/\./=DOT=/g; if ($FORM{'otpiska'}) { $addr_deleted=0; foreach (@mail_list) { if (/$crypt_email/) { $addr_deleted=1; next; } push (@new_mail_list,$_); } open(BASA_PODPISKA, ">$bases_dir/$podpiska_basa.tmp")||die print "Не могу открыть записать Подписку.tmp после удаления $!"; &flocking(BASA_PODPISKA,2); print BASA_PODPISKA @new_mail_list; &flocking(BASA_PODPISKA,8); close (BASA_PODPISKA)||die print "Не могу записать Подписку.tmp после удаления $!"; rename ("$bases_dir/$podpiska_basa.tmp","$bases_dir/$podpiska_basa")||die "Cannot rename $podpiska_basa.tmp $!"; if ($addr_deleted==1) { $alert="$txt{'unsubscribe_success'}"; } else { $alert="$txt{'unsubscribe_fail'}"; } } else { $address="no"; foreach (@mail_list) { if (/$crypt_email/) { $address="yes"; } } if ($address eq "no") { &data_time; $id=time(); $podpiska_data="$day.$mon.$year"; $new_adddress="$crypt_email\|$FORM{'podpiska_name'}\|$FORM{'podpiska_town'}\|$podpiska_data\|$id\|\n"; open(BASA_PODPISKA, ">>$bases_dir/$podpiska_basa") || die print "Не могу открыть Подписку на добавление $! "; &flocking(BASA_PODPISKA,2); print BASA_PODPISKA $new_adddress; &flocking(BASA_PODPISKA,8); close (BASA_PODPISKA) || die print "Не могу добавить в Подписку $!" ; $alert="$txt{'subscribe_success'}"; } else { $alert="$txt{'subscribe_fail'}"; } } HTM: $form_pw="
$alert


$back
"; &enter_pw_html; exit; } } if ($FORM{'make_zayavka'} && $korzina) { $page_id="$txt{'make_order'}"; $act="$txt{'order'}"; &data_time; $check='CHECKED'; $zayavka_id="$day$mon$year$hour$min$sec"; print &page_header; print &nav; print &poisk; $FORM{'viewzakaz'}='1'; $FORM{'page'}=''; &make_show_basa; print &show_all; print &choosen_form; print <<"NEW_ZAYAVKA";

$txt{'make_order'}

$txt{'order_header'}

$txt{'order_number'} $zayavka_id
$txt{'password'} $txt{'hint_password'}
$txt{'your_name'} $txt{'hint_your_name'}
$txt{'your_email'} $txt{'hint_email'}
$txt{'telefon'} $txt{'hint_telefon'}
$txt{'your_address'} $txt{'hint_address'}
$txt{'your_comments'} NEW_ZAYAVKA my $dostavka=''; $dostavka=&dostavka ||''; if($dostavka) { print qq~
$txt{'dostavka'}: ~; } print <<"NEW_ZAYAVKA1";
$txt{'total'}:




NEW_ZAYAVKA1 print &poisk; print &nav; print &page_footer; exit; } else { $FORM{'make_zayavka'}=0; } if ($FORM{'new_zayavka'}) { $page_id="$txt{'order_sending'}"; $act="$txt{'order_number'} $order_id"; $crypt_client_mail=$items=''; my $my_zayavka_id=$FORM{'my_zayavka_id'}||''; my $message=$FORM{'message'}||''; @zayavki=(); &check_Max_form_len; if(!-e "$bases_dir/$basa_zayavki"){ open (BASAZAYAVKI, ">$bases_dir/$basa_zayavki") || die print "Не могу открыть базу заявок $!"; close(BASAZAYAVKI) || die print "Не могу создать базу заявок $!"; } @zayavki=(); open (BASAZAYAVKI, "<$bases_dir/$basa_zayavki") || die print "Не могу прочитать базу заявок $!"; &flocking(BASAZAYAVKI,2); @zayavki=; &flocking(BASAZAYAVKI,8); close(BASAZAYAVKI); $zayavka=''; if($stoplist_on){ require "stop.pl"; &check_stop_list;} foreach (reverse @zayavki) { my @z=(); @z=split(/\|/); if ( $z[2] eq $my_zayavka_id ) { $zayavka='1'; last; } } if (!$zayavka) { $zayavka_id="$FORM{'my_zayavka_id'}"||''; if($FORM{'client_mail'}) { &check_email($FORM{'client_mail'}); $crypt_client_mail=$FORM{'client_mail'}; $crypt_client_mail=~s/\./=DOT=/g; $crypt_client_mail=~s/\@/=AT=/; } if(length $message < 10) { $page_id='???'; $form_pw="
$txt{'no_comments'}


$back
"; &enter_pw_html; exit; } my $dostavka_str=''; $dostavka_str=$FORM{'dostavka'}||''; if($dostavka_str) {$dostavka_str=" $txt{'dostavka'}: $dostavka_str"; } my $total_str=''; $total=$FORM{'total'}||''; if($total) {$total_str.=" $txt{'total'}: $total"; } my $client_pw=$FORM{'client_pw'}||''; my $client_name=$FORM{'client_name'}||''; &set_cookie('client_name',"$client_name",100); my $client_mail=$FORM{'client_mail'}||''; &set_cookie('client_mail',"$client_mail",100); my $client_phone=$FORM{'client_phone'}||''; &set_cookie('client_phone',"$client_phone",100); my $client_address=$FORM{'client_address'}||''; &set_cookie('client_address',"$client_address",100); if(!$client_name){$client_name='без имени';} if(!$FORM{'client_mail'}){$no_mail='не указан'; } $ip_host=''; get_host_by_ip($ENV{'REMOTE_ADDR'}); if($host){ $ip_host.=$host;} if($ENV{'REMOTE_HOST'}) { $ip_host.=$ENV{'REMOTE_HOST'}; } if($notify) { my @items=(); @items=split(/ /,$korzina); my $imgs=''; if(@items) { foreach my $id (@items) { if(-e "$index_dir/$index_img/$id.gif"){ $imgs.=qq~ ~;} elsif(-e "$index_dir/$index_img/$id.jpg"){ $imgs.=qq~ ~;} $items.=" $id "; } } $to=$admin_email; $no_mail=$otpravleno=''; $from="клиент $client_name <$FORM{'client_mail'}>"; $subj_message=$message||''; $subj_message=~s/
/ /g; $subj_message=~s/[\n|\r|\t]/ /g; $subj_message=~s/^(.{0,50}) (.*)$/$1\.\.\./gi; $subj_message=~s/\'|\"//gi; $subj_message=~tr/\xA0/ /s; $subj_message=~s/ +/ /g; $subj_message=~tr/ / /s; $subject="Заявка $zayavka_id: $subj_message "; if($stoplist_on){ require "stop.pl"; &check_stop_list;} $mail_body_html=<<"MAILHTML"; Заявка id=$zayavka_id

Заявка id=$zayavka_id


От:
$client_name

Заявка:
$message
$dostavka_str
$total_str

$imgs

Адрес:

$client_address
Телефон: $client_phone
Е-mail: $client_mail $no_mail
Корзина: $items
Пароль клиента для просмотра своей Заявки: $client_pw
Броузер клиента $ENV{'HTTP_USER_AGENT'}
IP клиента $ENV{'REMOTE_ADDR'} $ip_host



Ответить

MAILHTML &send_email; } &data_time; my $addr=$client_address; $addr=~s/
/ /gi; $client_first_message="
$txt{'first_mess'}
$day.$mon.$year   $hour:$min     $ip_host   $ENV{'REMOTE_ADDR'}

  • $txt{'customer'}

    $message


$txt{'your_address'} $addr

$dostavka_str
"; $first_admin_message="
$day.$mon.$year   $hour:$min  

  • $txt{'reply'}

    $txt{'first_response'}


"; $zayavka_str="$day.$mon.$year\|$hour:$min\|$zayavka_id\|$client_pw\|$client_name\|$crypt_client_mail\|$client_phone\|$client_address\|$first_admin_message $client_first_message\|$korzina\|$total\|\n"; open (BASAZAYAVKI, ">>$bases_dir/$basa_zayavki") || die print "Не могу открыть базу заявок на запись $!"; &flocking(BASAZAYAVKI,2); print BASAZAYAVKI $zayavka_str; &flocking(BASAZAYAVKI,8); close(BASAZAYAVKI) || die print "Не могу записать базу заявок $!"; $FORM{'my_zayavka_id'}="$zayavka_id"; } $otpravleno="$txt{'order_accepted'}"; &show_zayavka; print qq~ ~; exit; } if ($FORM{'edit_zayavka'}) { $act="$txt{'order'}"; $page_id="$txt{'my_order'}"; if($FORM{'my_zayavka_id'}){$page_id="№ $FORM{'my_zayavka_id'}"; } $otpravleno=$mess_to_mail=''; $ip_host=''; get_host_by_ip($ENV{'REMOTE_ADDR'}); if($host){ $ip_host.=$host;} if($ENV{'REMOTE_HOST'}) { $ip_host.=$ENV{'REMOTE_HOST'}; } if($stoplist_on){ require "stop.pl"; &check_stop_list;} &edit_zayavka; if ( ($notify==1) && $admin_email && $mess_to_mail ) { $zmail=~s/=AT=/\@/; $zmail=~s/=DOT=/\./g; $to="$admin_email"; $from="клиент $zname <$zmail>"; $subject="Сообщение по Заявке id=$zid от $zdata $ztime"; $mail_body_html=<<"MAIL_HTML"; $subject

$titul


$subject
$mess_to_mail

Имя: $zname
Адрес: $zaddr
Телефон: $zphone
Email: $zmail
Корзина: $zkorzina
Броузер клиента: $ENV{'HTTP_USER_AGENT'}
IP клиента: $ENV{'REMOTE_ADDR'} $ip_host
Время отправки: $day.$mon.$year $hour:$min

Ответить

MAIL_HTML &send_email; } &show_zayavka; exit; } if ($FORM{'show_my_zayavka'}) { $act="$txt{'my_order'}"; @zayavki=(); $alert=''; my $client_pw=$FORM{'client_pw'}||''; my $my_zayavka_id=$FORM{'my_zayavka_id'}||''; my $find=$FORM{'find'}||''; $page_id="$txt{'enter_order_id'}"; if(!$my_zayavka_id) { $page_id=$alert="$txt{'enter_order_id'}"; } elsif($my_zayavka_id !~ /^\s*\d{14}\s*$/ ) { $page_id=$alert="$txt{'wrong_order_id'}"; } else { $act="$txt{'order'}"; $page_id="№ $my_zayavka_id"; if(-e "$bases_dir/$basa_zayavki") { open (BASAZAYAVKI, "$bases_dir/$basa_zayavki") || die print "Не могу прочитать базу заявок $!\n"; &flocking(BASAZAYAVKI,2); @zayavki=; &flocking(BASAZAYAVKI,8); close(BASAZAYAVKI); } if(@zayavki) { foreach (@zayavki) { my @z=(); @z=split(/\|/); if(($z[2] eq $my_zayavka_id) || ($z[2] eq $find)) { if($z[3] && ($client_pw ne $z[3])) { $page_id="$txt{'error'}"; $alert="$txt{'wrong_pw'}"; &enter_zayavka_form; exit; } } } &show_zayavka; } exit; } &enter_zayavka_form; exit; } if($FORM{'direct_zakaz'}){require "direct_catalog.pl"; &direct_zakaz; } if($FORM{'feedback_message'}) { $act="$txt{'Contacts'}"||''; $page_id="$txt{'thank_you'}"||''; my $error=''; $from=''; $form_pw=''; my $feedback_name=$FORM{'feedback_name'}||'без имени'; my $feedback_town=$FORM{'feedback_town'}||''; my $feedback_phone=$FORM{'feedback_phone'}||''; my $feedback_subject=$FORM{'feedback_subject'}||''; my $feedback_message=$FORM{'feedback_message'}||''; if ($FORM{'feedback_email'}) { &check_email($FORM{'feedback_email'}); $crypt_feedback_email=$FORM{'feedback_email'}||''; $crypt_feedback_email=~s/\@/=AT=/; $crypt_feedback_email=~s/\./=DOT=/g; } else { $error.="$txt{'no_email'}
";} if (length $feedback_message < 3) {$error.="$txt{'no_mess'}
";} if (length $feedback_name > 100) {$error.="$txt{'too_long_name'}
"; } if (length $feedback_town > 200) {$error.="$txt{'too_long_town'}
"; } if (length $feedback_subject > 200) {$error.="$txt{'too_long_subject'}
"; } if (length $feedback_message > 10000) {$error.="$txt{'too_long_message'}
"; } if($stoplist_on){ require "stop.pl"; &check_stop_list;} if($error) { $form_pw=qq~
$error


~; &enter_pw_html; exit; } &data_time; $feedback_mess_id=''; $feedback_mess_id="$day$mon$year$hour$min$sec"; if(!$feedback_subject) {$feedback_subject="Сообщение по Обратной Связи id=$feedback_mess_id";} my $new_feedback_mess_str=''; $new_feedback_mess_str="$day.$mon.$year $hour:$min\|\|\|$feedback_name\|$feedback_town\|$feedback_phone\|$crypt_feedback_email\|$feedback_subject\|$feedback_message\|$feedback_mess_id\|"; $new_feedback_mess_str=~s/\n//g; $new_feedback_mess_str=$new_feedback_mess_str."\n"; open(FEEDBACK,">>$bases_dir/$feedback_basa")||die print "Не могу открыть записать сообщение Обратной Связи $!"; &flocking(FEEDBACK,2); print FEEDBACK $new_feedback_mess_str; &flocking(FEEDBACK,8); close (FEEDBACK)||die print "Не могу записать сообщение Обратной Связи $!"; if($notify) { $to=$admin_email; $from="клиент $feedback_name <$FORM{'feedback_email'}>"; $feedback_subject=~s/\'|\"//gi; $subject=$feedback_subject; get_host_by_ip($ENV{'REMOTE_ADDR'}); my $ip_host=''; if($host){ $ip_host.=$host;} if($ENV{'REMOTE_HOST'}) { $ip_host.=$ENV{'REMOTE_HOST'}; } $mail_body_html=<<"MAIL_HTML"; Сообщение по Обратной Связи id=$feedback_mess_id

Сообщение по Обратной Связи id=$feedback_mess_id


От: $feedback_name
Вопрос, комментарий: $feedback_message

Населённый пункт:

$feedback_town
Е-mail: $FORM{'feedback_email'}
Телефон: $feedback_phone
Время подачи: $day.$mon.$year $hour:$min | IP-address $ENV{'REMOTE_ADDR'} $ip_host | Сообщение № $feedback_mess_id

Ответить

MAIL_HTML &send_email; } print &page_header; print <<"FEDBACK_OK";









$txt{'feedback_ok'}









FEDBACK_OK print &page_footer; exit; } if($FORM{'price_list'}) { &get_price_list; } if($FORM{'ext_poisk'}) {$page_id="$txt{'ext_poisk'}"; print &page_header; &ext_poisk; print &page_footer; exit;} $wellcome_str=''; if($privet && ($wellcome || $hello)) { my $wellcome=$wellcome||''; $wellcome=~tr/[]/<>/; $wellcome=~s/"/"/g; my $hello=$hello||''; $hello=~tr/[]/<>/; $hello=~s/"/"/g; $wellcome_str="

$wellcome

$hello

"; $privet=0; } if(-e $page_tmpl){ open(PAGE_TMPL,"<$page_tmpl")||die print "Не могу открыть $page_tmpl $!"; &flocking(PAGE_TMPL,2); @page_tmpl=; &flocking(PAGE_TMPL,8); close (PAGE_TMPL); &make_show_basa; my $page_header=&page_header||''; my $navb=&nav||''; my $poisk=&poisk||''; my $page_nav=&page_nav||''; my $show_all=&show_all||''; my $korz=&choosen_form||''; my $p_footer=&page_footer||''; foreach(@page_tmpl){ s/{{page_header}}/$page_header/g; s/{{navbar}}/$navb/g; s/{{poisk}}/$poisk/g; s/{{wellcome_str}}/$wellcome_str/g; s/{{page_nav}}/$page_nav/g; s/{{all_position}}/$show_all/g; s/{{korzina}}/$korz/g; s/{{page_footer}}/$p_footer/g; if($reklama_horizontal) { s/{{reklama_horizontal}}/&reklama('horizontal')/ge; } else{ s/{{reklama_horizontal}}//g; } if($reklama_vertical) { s/{{reklama_vertical}}/&reklama('vertical')/ge; } else{ s/{{reklama_vertical}}//g; } if($url && $dir && $index_img){ s/{{img_dir}}/$url$dir\/$index_img/g; } else { s/{{img_dir}}//g; } } print @page_tmpl; } exit; sub ext_poisk { my $poisk_page=''; my $submit_ext_poisk=''; my @ext_poisk_page=(); my $my_zayavka_id=$FORM{'my_zayavka_id'}||''; $poisk_page="$index_dir/poisk.shtml"||"$index_dir/poisk.html"; if(-e "$poisk_page") { $submit_ext_poisk=qq~ ~; open(EXT_POISK,"<$poisk_page") || return 1; @ext_poisk_page=; close(EXT_POISK); foreach (@ext_poisk_page){ s/\<\!-- submit_ext_poisk -->/$submit_ext_poisk/; print; } } }