"; // БЛОК загадок $rand_zag=array( "Сидит дед, во сто шуб одет. Кто его раздевает, тот слёзы проливает.", "Стоит Антошка на одной ножке. Кто его встретит - всяк ему поклонится.", "Кто поляны белит белым? И на стенах пишет мелом?", "Шьет пуховые перины, разукрасил все витрины?", "Покатился по полу колобок, да оставил хвост на семь верст", "Все обходят это место: здесь земля, как буд-то тесто.", "Здесь осока, кочки, мхи, нет опоры для ноги.", "умный Ивашка в деревянной рубашке. По белому полю пойдёт, всяк его след поймет", "Кто приходит, кто уходит, все ее за ручку водят", "Летит - кричит, сядет - молчит, кто его убьет - свою кровь прольет"); // БЛОК ответов на загадки $rand_qwe=array( "лук", "гриб", "мороз", "мороз", "клубок", "болото", "болото", "карандаш", "дверь", "комар"); // Для цифрозащиты 4-ый антиспам: $maxkey=4; // Колличество символов в коде (можно изменять) $absrand="233443";// Случайное число. Используется для цифрозащиты. Генерировать его нужно случайно при настройке или изменении конфигурации скрипта. 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+$absrand)==$num) {imgwr($st,$i); die();}} } exit;} $rnd_do=array("плюс","минус","умножить"); // Событие добавления сообщения if $event=add if (isset($_GET['event'])) { if ($_GET['event']=="add") { // возвращаем значения данных из формы и присваиваем их переменным if (isset ($_POST['name']) & isset ($_POST['msg']) & isset ($_POST['email'])) {$name=$_POST['name']; $msg=$_POST['msg']; $email=$_POST['email'];} else {exit;} // Защита от взлома - проверяется с какой страницы приш+л юзер $fromurl=getenv("HTTP_REFERER"); if (!ereg($host,$fromurl)) {print"$fromurl"; exit("Хакер? ха-ха ...\n");} sleep(1); // мелкая защита от БОТОВ. Человеку секунда не время - а прога по подбору ключа - будет работать долго и не загружать сервер if ($antispam=="2") { $bada="$shapka $back Введённый вами код НЕ совпадает с расчётным!"; if (isset($_POST['usernum'])) {$usernum=$_POST['usernum'];} else {print"$bada"; exit;} if (isset($_POST['chek'])) {$chek=$_POST['chek'];} else {print"$bada"; exit;} $dt=explode("|",$chek); if ($dt[1]==0) {$number=$dt[0]+$dt[2];} if ($dt[1]==1) {$number=$dt[0]-$dt[2];} if ($dt[1]==2) {$number=$dt[0]*$dt[2];} if ($usernum!=$number) {print"$bada"; exit;}} if ($antispam=="3") { $qwe=$_POST['qwe']; $answer=$_POST['answer']; if (strtolower($rand_qwe[$qwe])!=strtolower($answer)) {print"$shapka $back ОТВЕТ НЕ верен! Попробуйте снова."; exit;}} if ($antispam=="4") { $bada="$shapka $back Введённый вами код НЕ верен!"; if (isset($_POST['usernum'])) {$usernum=$_POST['usernum'];} else {print"$bada"; exit;} if (isset($_POST['xkey'])) {$xkey=$_POST['xkey'];} else {print"$bada"; exit;} $userkey=md5("$usernum+$absrand"); if ($userkey!=$xkey) {print"$bada"; exit;}} if ($name == "" || strlen($name) > $maxname) {print "$shapka $back ваше имя или пустое, или превышает $maxname символов!"; exit;} if ($msg == "" || strlen($msg) > $maxmsg) {print "$shapka $back ваше сообщение или пустое или превышает $maxmsg символов."; exit;} if (!eregi("^([0-9a-z]([-_.]?[0-9a-z])*@[0-9a-z]([-.]?[0-9a-z])*\\.[a-wyz][a-z](fo|g|l|m|mes|o|op|pa|ro|seum|t|u|v|z)?)$", $email) and $email != "") {print "$shapka $back и введите корректный E-mail адрес!"; exit;} $msg=str_replace("|","I",$msg); $name=wordwrap($name,24,' ',1); // разрываем слишком длинные строки $msg=wordwrap($msg,75,' ',1); $today=mktime(); // производим запись данных в файл по шаблону: собщение|имя|емайл|дата|время|МКТАЙМ| $text="$msg|$name|$email|$date|$time|$today|"; $text=str_replace(" ",' ',$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=stripslashes($text); $text=preg_replace("/\\\/",'\',$text); $text=str_replace("\r\n","
",$text); $text=str_replace("\n\n",'

',$text); $text=str_replace("\n",'
',$text); // Вырезаем 3 и более ентеров do {$text=str_replace("


","
",$text);} while (preg_match("/



/i",$text)); // Вырезаем 3 и более пробелов подряд do {$text=str_replace(" "," ",$text);} while (preg_match("/ /i",$text)); $text=str_replace("\t",' ',$text); $text=str_replace("\r",' ',$text); $text=str_replace(' ',' ',$text); if ($antiflud=="1") { // функция АНТИФЛУД здесь! $linesn = file("guest.dat"); $in=count($linesn); if ($in > 0) { $lines=file("guest.dat"); $i=count($lines)-1; $itogo=$i; $dtf=explode("|",$lines[$i]); $txtback="$dtf[0]|$dtf[1]|$dtf[2]|$dtf[3]|"; $lastmsg=$dtf[5]; $dtb=explode("|",$text); $txtflud="$dtb[0]|$dtb[1]|$dtb[2]|$dtb[3]|"; $today=mktime(); if (($lastmsg+30)>$today) { $eshe=($lastmsg+30)-$today; print"$back Чаще 30 секунд запрещено размещать сообщения. Подождите ещё $eshe секунд!"; exit;} if ($txtflud==$txtback) {print"$back Данное сообщение уже размещено. Флудить в гостевой запрещено!"; exit;} } } $fp=fopen("guest.dat","a+"); flock ($fp,LOCK_EX); fputs($fp,"$text\r\n"); flock ($fp,LOCK_UN); fclose($fp); @chmod("guest.dat", 0644); 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"; // Собираем всю информацию в теле письма $host=$_SERVER["HTTP_HOST"]; $self=$_SERVER["PHP_SELF"]; $allmsg = $gname.chr(13).chr(10).'Новое сообщение в гостевой: http://'.$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); // Отправляем письмо майлеру на съедение ;-) } print "$shapka
Спасибо, $name, Ваше сообщение успешно добавлено.

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

Нажмите здесь, если не хотите больше ждать
"; exit; } } // Типо главной страницы if (!isset($_GET['page'])) {$page=1;} else {$page=$_GET['page']; if ($page<1) $page=1;} if (!ctype_digit($page)) {$page=1;} print " $gname

$gname

"; if (strlen($maintext)>5) {print"";} print "
Сегодня $date Добавить сообщение Вернуться на главную

$maintext
 
"; include "top.html"; // Подключаем нижний рекламный блок if (isset($_GET['event'])) { if ($_GET['event']=="new") { print "
Добавить сообщение
Имя и E-mail

Сообщение
"; if ($smile!="0") { print" $s1 $s2 $s3 $s4 $s5 $s6 $s7 $s8 $s9 $s10 $s11";} print"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") { // Вывод изображений на экран (все кодированы - робот не пройдёт) if (array_key_exists("image", $_REQUEST)) { $num=$_REQUEST["image"]; for ($i=0; $i<10; $i++) {if (md5($i+$absrand)==$num) {imgwr($st,$i); die();}} } $xkey=""; mt_srand(time()+(double)microtime()*1000000); print"
Защитный код:"; for ($i=0; $i<$maxkey; $i++) { $snum[$i]=mt_rand(0,9); $psnum=md5($snum[$i]+$absrand); $phpself=$_SERVER["PHP_SELF"]; echo "\n"; $xkey=$xkey.$snum[$i]; } $xkey=md5("$xkey+$absrand"); print" (введите число, указанное на картинке) "; } print"
 
"; } } // считываем данные в память $lines=file("guest.dat"); $maxi=count($lines)-1; $maxpage=ceil(($maxi+1)/$qq); if ($page>$maxpage) {$page=$maxpage;} if ($maxi>"-1") { print "
Страницы:  "; // выводим СПИСОК СТРАНИЦ ВВЕРХУ if ($page>=4 and $maxpage>5) print "1 ... "; $f1=$page+2; $f2=$page-2; if ($page==1) { $f1=$page+4; $f2=$page; } if ($page==2) { $f1=$page+3; $f2=$page-1; } if ($page==$maxpage) { $f1=$page; $f2=$page-4; } if ($page==$maxpage-1) { $f1=$page+1; $f2=$page-3; } if ($maxpage<4) {$f1=$maxpage; $f2=1;} for($i=$f2; $i<=$f1; $i++) {if ($page==$i) {print "$i  ";} else {print "$i  ";}} if ($page<=$maxpage-3 and $maxpage>5) print "... $maxpage"; print "

"; // Выводим 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 (strlen($dt[0])>5) { // Если строчка потерялась в скрипте (пустая строка) - то просто её НЕ выводим if ($smile!="0") { // заменяем текстовые смайлики на графические если разрешено $dt[0]=str_replace(":-))",$s1,$dt[0]); $dt[0]=str_replace(":-)",$s2,$dt[0]); $dt[0]=str_replace(":-P",$s3,$dt[0]); $dt[0]=str_replace("8-)",$s4,$dt[0]); $dt[0]=str_replace(":-(",$s5,$dt[0]); $dt[0]=str_replace(":-O",$s6,$dt[0]); $dt[0]=str_replace(";-)",$s7,$dt[0]); $dt[0]=str_replace(":roll:",$s8,$dt[0]); $dt[0]=str_replace(":rf:",$s9,$dt[0]); $dt[0]=str_replace("8-(",$s10,$dt[0]); $dt[0]=str_replace("`-(",$s11,$dt[0]);} $dt[0]=str_replace("[RB]","", $dt[0]); $dt[0]=str_replace("[/RB]","", $dt[0]); $dt[0]=str_replace("&#124;","|",$dt[0]); if ($liteurl=="1") {$dt[0]=eregi_replace("((https?|ftp)://[[:alnum:]_=/-]+(\\.[[:alnum:]_=/-]+)*(/[[:alnum:]+&._=/~%]*(\\?[[:alnum:]?+&;_=/%]*)?)?)", "\\1", $dt[0]);} print"
$dt[1] ($dt[3] $dt[4])
    $dt[0]
    $num
 
"; } // если строчка потерялась if ($msginout=="1") {$whm=$fm; $whe=$lm;} else {$whm=$lm; $whe=$fm;} } while($whm < $whe); print "Страницы:  "; // выводим СПИСОК СТРАНИЦ ВНИЗУ if ($page>=4 and $maxpage>5) print "1 ... "; $f1=$page+2; $f2=$page-2; if ($page==1) { $f1=$page+4; $f2=$page; } if ($page==2) { $f1=$page+3; $f2=$page-1; } if ($page==$maxpage) { $f1=$page; $f2=$page-4; } if ($page==$maxpage-1) { $f1=$page+1; $f2=$page-3; } if ($maxpage<4) {$f1=$maxpage; $f2=1;} for($i=$f2; $i<=$f1; $i++) {if ($page==$i) {print "$i  ";} else {print "$i  ";}} if ($page<=$maxpage-3 and $maxpage>5) print "... $maxpage"; print "
"; } else {print"

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

ТТИ ЮФУ. Кафедра ПИ. © 2010 ФИБ."; ?>