// WR-Guest v 1.8.1 // 25.01.09 г. // Miha-ingener@yandex.ru
error_reporting (E_ALL);
include "config.php";
$host="http://"; $host.=$_SERVER["HTTP_HOST"];// Определяем URL места нахождения скрипта (для защиты от спама)
$shapka="
";
// БЛОК загадок
$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/",'
";
} }
// считываем данные в память
$lines=file("guest.dat");
$maxi=count($lines)-1;
$maxpage=ceil(($maxi+1)/$qq); if ($page>$maxpage) {$page=$maxpage;}
if ($maxi>"-1") {
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("|","|",$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]
";
} // если строчка потерялась
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 "";
?>