"; // БЛОК загадок $rand_zag=array( "Сидит дед, во сто шуб одет. Кто его раздевает, тот слёзы проливает.", "Стоит Антошка на одной ножке. Кто его встретит - всяк ему поклонится.", "Кто поляны белит белым? И на стенах пишет мелом?", "Шьет пуховые перины, разукрасил все витрины?", "Покатился по полу колобок, да оставил хвост на семь верст", "Все обходят это место: здесь земля, как буд-то тесто.", "Здесь осока, кочки, мхи, нет опоры для ноги.", "умный Ивашка в деревянной рубашке. По белому полю пойдёт, всяк его след поймет", "Кто приходит, кто уходит, все ее за ручку водят", "Летит - кричит, сядет - молчит, кто его убьет - свою кровь прольет"); // БЛОК ответов на загадки $rand_qwe=array( "лук", "гриб", "мороз", "мороз", "клубок", "болото", "болото", "карандаш", "дверь", "комар"); if (isset($_GET['image'])) { // Функция с цифрами защиты $st="R0lGODlhCgAMAIABAFNTU////yH5BAEAAAEALAAAAAAKAAwAAAI"; // общая часть для всех рисунков function imgwr($st,$num){ if ($num=="0") {$len="63"; $number=$st."WjIFgi6e+QpMP0jin1bfv2nFaBlJaAQA7";} if ($num=="1") {$len="61"; $number=$st."UjA1wG8noXlJsUnlrXhE/+DXb0RUAOw==";} if ($num=="2") {$len="64"; $number=$st."XjIFgi6e+QpMPRlbjvFtnfFnchyVJUAAAOw==";} if ($num=="3") {$len="64"; $number=$st."XjIFgi6e+Qovs0RkTzXbj+3yTJnUlVgAAOw==";} if ($num=="4") {$len="64"; $number=$st."XjA9wG8mWFIty0amczbVJDVHg9oSlZxQAOw==";} if ($num=="5") {$len="63"; $number=$st."WTIAJdsuPHovSKGoprhs67mzaJypMAQA7";} if ($num=="6") {$len="63"; $number=$st."WjIFoB6vxmFw0pfpihI3jOW1at3FRAQA7";} if ($num=="7") {$len="61"; $number=$st."UDI4Xy6vtAIzTyPpg1ndu9oEdNxUAOw==";} if ($num=="8") {$len="63"; $number=$st."WjIFgi6e+QpMP2slSpJbn7mFeWDlYAQA7";} if ($num=="9") {$len="64"; $number=$st."XjIFgi6e+QpMP0jinvbT2FGGPxmlkohUAOw==";} header("Content-type: image/gif"); header("Content-length: $len"); echo base64_decode($number); } // Вывод изображений на экран (все кодированы - робот не пройдёт) if (array_key_exists("image", $_REQUEST)) { $num=$_REQUEST["image"]; for ($i=0; $i<10; $i++) {if (md5($i+$rand_key)==$num) {imgwr($st,$i); die();}} } exit;} $rnd_do=array("плюс","минус","умножить"); function replacer ($text) { // ФУНКЦИЯ очистки кода $text=str_replace(" ",' ',$text); $text=str_replace(">",'>',$text); $text=str_replace("<",'<',$text); $text=str_replace("\"",'"',$text); $text=preg_replace("/\n\n/",'

',$text); $text=preg_replace("/\n/",'
',$text); $text=preg_replace("/\\\$/",'$',$text); $text=preg_replace("/\r/",'',$text); $text=preg_replace("/\\\/",'\',$text); // если magic_quotes включена - чистим везде СЛЭШи в этих случаях: одиночные (') и двойные кавычки ("), обратный слеш (\) if (get_magic_quotes_gpc()) { $text=str_replace("\"",'"',$text); $text=str_replace("\'",'\'',$text); $text=str_replace("\\",'\',$text); } $text=str_replace("\r\n","
",$text); $text=str_replace("\n\n",'

',$text); $text=str_replace("\n",'
',$text); $text=str_replace("\t",'',$text); $text=str_replace("\r",'',$text); $text=str_replace(' ',' ',$text); return $text; } function nospam() { global $max_key,$rand_key; // Функция АНТИСПАМ 2011 ! if (array_key_exists("image", $_REQUEST)) { $num=replacer($_REQUEST["image"]); for ($i=0; $i<10; $i++) {if (md5("$i+$rand_key")==$num) {imgwr($st,$i); die();}} } $xkey=""; mt_srand(time()+(double)microtime()*1000000); $dopkod=mktime(0,0,0,date("m"),date("d"),date("Y")); // доп.код: меняется каждые 24 часа $stime=md5("$dopkod+$rand_key");// доп.код echo''; $nummax=0; for ($i=0; $i<=$max_key; $i++) { $snum[$i]=mt_rand(0,9); $psnum=md5($snum[$i]+$rand_key+$dopkod); $secret=mt_rand(0,1); $styles=''; if ($nummax<3) { if ($secret==1 or $i==0) {$styles='bgcolor=#FFFF00'; $xkey=$xkey.$snum[$i]; $nummax++;}} echo "\r\n";} $xkey=md5("$xkey+$rand_key+$dopkod"); //число + ключ из config.php + код меняющийся кажые 24 часа print"
Защитный код: (введите цифры, которые на жёлтом фоне)
"; return; } if (isset($_GET['savemsg'])) { // Событие добавления сообщения // возвращаем значения данных из формы и присваиваем их переменным if (isset ($_POST['name']) & isset ($_POST['msg']) & isset ($_POST['email'])) { $name=replacer($_POST['name']); $msg=replacer($_POST['msg']); $email=replacer($_POST['email']);} else exit; $ip=$_SERVER['REMOTE_ADDR']; // определяем IP юзера //Проверка ЗАПРЕТА IP-пользователя на добавление объявлений (файл bad_ip.dat) if (is_file("data/bad_ip.dat")) { $lines=file("data/bad_ip.dat"); $i=count($lines); if ($i>0) {do {$i--; $idt=explode("|", $lines[$i]); if ($idt[0]===$ip) exit("



Админитратор заблокировал для Вашего IP: $ip
возможность добавлять что-либо по следующей причине:

$idt[1].

Вам разрешено просматривать сообщения,
а вот ДОБАВЛЯТЬ СООБЩЕНИЯ категорически ЗАПРЕЩЕНО!


"); } while($i > "1");} unset($lines);} if (isset($_POST['www'])) $www=$_POST['www']; else $www=""; if (isset($_POST['addpole'])) $addpole=$_POST['addpole']; else $addpole=""; if (isset($_POST['rezerved1'])) $rezerved1=$_POST['rezerved1']; else $rezerved1=""; if (isset($_POST['rezerved2'])) $rezerved2=$_POST['rezerved2']; else $rezerved2=""; if (isset($_POST['rezerved3'])) $rezerved3=$_POST['rezerved3']; else $rezerved3=""; // БЛОК ГЕНЕРИРУЕТ СЛЕДУЮЩИЙ ПО ПОРЯДКУ НОМЕР сообщения, начиная просмотр с 1000 $rn=1000; $allid=null; $records=file("data/guest.dat"); $imax=count($records); $i=$imax; if ($i > 0) { do {$i--; $rd=explode("|",$records[$i]); $allid[$i]=$rd[0]; } while($i>0); //natcasesort($allid); // сортируем по возрастанию do $rn++; while(in_array($rn,$allid)); } // Защита от взлома - проверяется с какой страницы пришёл юзер $fromurl=getenv("HTTP_REFERER"); if (substr_count($fromurl,$host)<1) exit("Хакер? ха-ха ...\n"); sleep(1); // мелкая защита от БОТОВ if ($antispam=="2") { $bada="$shapka $back Введённый вами код НЕ совпадает с расчётным!"; if (isset($_POST['usernum'])) $usernum=$_POST['usernum']; else exit("$bada"); if (isset($_POST['chek'])) $chek=$_POST['chek']; else exit("$bada"); $dt=explode("|",$chek); if ($dt[1]==0) $number=$dt[8]+$dt[2]; if ($dt[1]==1) $number=$dt[8]-$dt[2]; if ($dt[1]==2) $number=$dt[8]*$dt[2]; if ($usernum!=$number) exit("$bada"); } if ($antispam=="3") { $qwe=$_POST['qwe']; $answer=$_POST['answer']; if (strtolower($rand_qwe[$qwe])!=strtolower($answer)) exit("$shapka $back ОТВЕТ НЕ верен! Попробуйте снова."); } if ($antispam=="4") { //--А-Н-Т-И-С-П-А-М--проверка кода-- if (!isset($_POST['usernum']) or !isset($_POST['xkey']) or !isset($_POST['stime']) ) exit("данные из формы не поступили!"); $usernum=replacer($_POST['usernum']); $xkey=replacer($_POST['xkey']); $stime=replacer($_POST['stime']); $dopkod=mktime(0,0,0,date("m"),date("d"),date("Y")); // доп.код. Меняется каждые 24 часа $usertime=md5("$dopkod+$rand_key");// доп.код $userkey=md5("$usernum+$rand_key+$dopkod"); if (($usertime!=$stime) or ($userkey!=$xkey)) exit("введён ОШИБОЧНЫЙ код!"); } if ($name == "" || strlen($name) > $maxname) exit("$shapka $back ваше имя или пустое, или превышает $maxname символов!
"); if ($msg == "" || strlen($msg) > $maxmsg) exit("$shapka $back ваше сообщение или пустое или превышает $maxmsg символов."); if (!preg_match('/^([0-9a-zA-Z]([-.w]*[0-9a-zA-Z])*@([0-9a-zA-Z][-w]*[0-9a-zA-Z].)+[a-zA-Z]{2,9})$/si',$email) and strlen($email)>50 and $email!="") exit("$shapka $back и введите корректный E-mail адрес!"); $msg=str_replace("|","I",$msg); $name=wordwrap($name,24,' ',1); // разрываем слишком длинные строки $msg=wordwrap($msg,75,' ',1); $today=mktime(); // определяем текущее время // производим запись данных в файл по шаблону: ключ|штамп_времени|1|IP|имя|емайл|www-адрес|доп_поле|собщение|ответ_админа|резервное_поле1|резервное_поле2|резервное_поле3| $text="$rn|$today|1|$ip|$name|$email|$www|$addpole|$msg||$rezerved1|$rezerved2|$rezerved3|"; $text=replacer($text); if ($antiflud=="1") { // функция АНТИФЛУД здесь! $linesn = file("data/guest.dat"); $in=count($linesn); if ($in > 0) { $lines=file("data/guest.dat"); $i=count($lines)-1; $itogo=$i; $dtf=explode("|",$lines[$i]); $txtback="$dtf[3]|$dtf[4]|$dtf[5]|$dtf[8]|"; $lastmsg=$dtf[5]; $dtb=explode("|",$text); $txtflud="$dtb[3]|$dtb[4]|$dtb[5]|$dtb[8]|"; $today=mktime(); if (($lastmsg+30)>$today) { $eshe=($lastmsg+30)-$today; exit("$back Чаще 30 секунд запрещено размещать сообщения. Подождите ещё $eshe секунд!"); if ($txtflud==$txtback) exit("$back Данное сообщение уже размещено. Флудить в гостевой запрещено!"); } } if ($undermoder==TRUE) $fp=fopen("data/guest-moder.dat","a+"); else $fp=fopen("data/guest.dat","a+"); flock ($fp,LOCK_EX); fputs($fp,"$text\r\n"); flock ($fp,LOCK_UN); fclose($fp); if ($sendmail=="1") { // отправка сообщения админу на мыло $headers=null; $headers.="Content-Type: text/plain; charset=windows-1251\r\n"; $headers.="From: ".$name." <".$email.">\r\n"; $headers.="X-Mailer: PHP/".phpversion()."\r\n"; // Собираем всю информацию в теле письма $allmsg = $gname.chr(13).chr(10).'Новое сообщение в гостевой: '.$host.$self.chr(13).chr(10).'Имя: '.$name.chr(13).chr(10).'E-mail: '.$email.chr(13).chr(10).'Сообщение: '.$msg.chr(13).chr(10); mail("$adminemail", "$gname (сообщение)", $allmsg, $headers); // Отправляем письмо майлеру на съедение ;-) } if ($undermoder==TRUE) $addtext="
После одобрения модератором оно будет опубликовано."; else $addtext=""; print "$shapka
Спасибо, $name, Ваше сообщение успешно добавлено. $addtext

Через несколько секунд Вы будете автоматически перемещены на первую страницу гостевой.

ДАЛЬШЕ >>>
"; exit; }} // Типо главной страницы // считываем данные в память $lines=file("data/guest.dat"); $maxi=count($lines)-1; $i=0; $maxpage=ceil(($maxi+1)/$qq); // Исключаем ошибку вызова несуществующей страницы if (!isset($_GET['page'])) $page=1; else {$page=$_GET['page']; if (!ctype_digit($page)) $page=1; if ($page<1) $page=1;} if ($page>$maxpage) { $page=$maxpage; $shapka=str_replace('','',$shapka); print"$shapka


Данной страницы не существует. Вы можете перейти по ссылке
на главную страницу гостевой книги"; if ($page>1) print",
либо на последнюю страницу!"; echo''; exit;} if ($undermoder==TRUE) $addtext="Модерирование включено, поэтому сообщения публикуются только при одобрении администратора."; else $addtext=""; print " $gname

$gname

Сегодня $date Добавить сообщение Вернуться на главную

$maintext

$addtext
"; include "data/top.html"; // Подключаем нижний рекламный блок if (isset($_GET['addmsg'])) { print "
Добавить сообщение

Имя:   E-mail:
"; if ($use_www==TRUE) print"
Сайт:
"; if ($use_addpole==TRUE) print"
Доп. поле:
"; if ($use_rezerv1==TRUE) print"
Резервное поле 1:
"; if ($use_rezerv2==TRUE) print"
Резервное поле 2:
"; if ($use_rezerv3==TRUE) print"
Резервное поле 3:
"; print"Сообщение:

"; if ($smile!="0") { print" $s1 $s2 $s3 $s4 $s5 $s6 $s7 $s8 $s9 $s10 $s11 B RB
";} // Второй вариант антиспама if ($antispam=="2") {$rnd1=mt_rand(1,9); $rnd2=mt_rand(0,2); $rnd3=mt_rand(1,9); print"Защитный код АНТИСПАМ: $rnd1 $rnd_do[$rnd2] $rnd3 = (посчитайте и введите значение) "; } // Третий вариант антиспама if ($antispam=="3") { $rand=mt_rand(0,9); $rnd=$rand_zag[$rand]; print"Отгадай загадку $rnd введите ответ (в ответе не используйте пробелы)";} // Четвёртый вариант антиспама if ($antispam=="4") nospam(); // АНТИСПАМ ! print"

 
"; } if ($maxi>"-1") { // формируем переменную $pageinfo - со СПИСКОМ СТРАНИЦ $pageinfo=""; $addpage=""; $maxpage=ceil(($maxi+1)/$qq); if ($page>$maxpage) $page=$maxpage; $pageinfo.="
Страницы:  "; if ($page>3 and $maxpage>5) $pageinfo.="1 ... "; $f1=$page+2; $f2=abs($page-2); if ($f2=="0") $f2=1; if ($page>=$maxpage-1) $f1=$maxpage; if ($maxpage<=5) {$f1=$maxpage; $f2=1;} for($i=$f2; $i<=$f1; $i++) { if ($page==$i) $pageinfo.="$i  "; else {if ($i!=1) $addpage="?page=$i"; $pageinfo.="$i  ";} } if ($page<=$maxpage-3 and $maxpage>5) $pageinfo.="... $maxpage"; $pageinfo.='
'; print"$pageinfo"; // Выводим qq сообщений на текущей странице $maxpage=ceil(($maxi+1)/$qq); if ($page>$maxpage) $page=$maxpage; if ($msginout=="1") { $fm=$qq*($page-1); if ($fm>$maxi) $fm=$maxi-$qq; $lm=$fm+$qq; if ($lm>$maxi) $lm=$maxi+1; } else { $fm=$maxi-$qq*($page-1); if ($fm<"0") $fm=$qq; $lm=$fm-$qq; if ($lm<"0") $lm="-1"; } do { $dt = explode("|", $lines[$fm]); if ($msginout=="1") {$fm++; $num=$maxi-$fm+2;} else {$fm--; $num=$fm+2;} if (!isset($dt[8])) $dt[8]=""; if (strlen($dt[8])>1) { // Если строчка потерялась в скрипте (пустая строка) - то просто её НЕ выводим if ($smile!="0") { // заменяем текстовые смайлики на графические если разрешено $dt[8]=str_replace(":-))",$s1,$dt[8]); $dt[8]=str_replace(":-)",$s2,$dt[8]); $dt[8]=str_replace(":-P",$s3,$dt[8]); $dt[8]=str_replace("8-)",$s4,$dt[8]); $dt[8]=str_replace(":-(",$s5,$dt[8]); $dt[8]=str_replace(":-O",$s6,$dt[8]); $dt[8]=str_replace(";-)",$s7,$dt[8]); $dt[8]=str_replace(":roll:",$s8,$dt[8]); $dt[8]=str_replace(":rf:",$s9,$dt[8]); $dt[8]=str_replace("8-(",$s10,$dt[8]); $dt[8]=str_replace("`-(",$s11,$dt[8]);} $dt[8]=str_replace("[B]","", $dt[8]); $dt[8]=str_replace("[/B]","", $dt[8]); $dt[8]=str_replace("[RB]","", $dt[8]); $dt[8]=str_replace("[/RB]","", $dt[8]); $dt[8]=str_replace("&#124;","|",$dt[8]); $dt[8]=str_replace("<br>","
",$dt[8]); if ($liteurl==TRUE) $dt[8]=preg_replace("#(\[url=([^\]]+)\](.*?)\[/url\])|(http://(www.)?[0-9a-z\.-]+\.[a-z]{2,6}[0-9a-z/\?=&\._-]*)#","$4 ",$dt[8]); $dt[1]=date("d.m.Y : H:i:s",$dt[1]); print"
$dt[4] ($dt[1])
"; if (strlen($dt[6])>1) print "Сайт: $dt[6]
"; if (strlen($dt[7])>1) print "Доп. поле: $dt[7]
"; if (strlen($dt[10])>1) print"Резервное поле 1 $dt[10],"; if (strlen($dt[11])>1) print"Резервное поле 1 $dt[11],"; if (strlen($dt[12])>1) print"Резервное поле 1 $dt[12]"; print"
    $dt[8]

    "; if (strlen($dt[9])>1) print"
    Отвечает администратор:$dt[9]
    "; print"
    $num
 
"; } // если строчка потерялась if ($msginout=="1") {$whm=$fm; $whe=$lm;} else {$whm=$lm; $whe=$fm;} } while($whm < $whe); print"$pageinfo"; } else print"

Гостевая книга пуста. Добавьте сообщение.
"; // if $maxi > "-1" ?>

Powered by WR-Guest © 2.0.1