"; $months=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+$absrand)==$num) {imgwr($st,$i); die();}} } exit;} // Событие добавления сообщения if $event=add if (isset($_GET['event'])) { if ($_GET['event']=="add") { if (isset($_POST['answer'])) { if (isset($_POST['pass'])) {$pass=$_POST['pass'];} else {$pass="";} if (isset($_POST['status'])) {$status=$_POST['status'];} else {print"$shapka $back попытка взлома!"; exit;} $answer=$_POST['answer']; $name=$_POST['name']; $msg=$_POST['msg']; $email="";} else {if (isset ($_POST['name']) & isset ($_POST['msg']) & isset ($_POST['email'])) {$name=$_POST['name']; $msg=$_POST['msg']; $email=$_POST['email'];} else {exit;}} sleep(1); // мелкая защита от БОТОВ. Человеку секунда не время - а прога по подбору ключа - будет работать долго и не загружать сервер if ($antispam!="0") { $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;} if (!isset($_GET['page'])) {$page=1;} else {$page=$_GET['page'];} $msg=str_replace("|","|",$msg); $name=wordwrap($name,24,' ',1); // разрываем слишком длинные строки $msg=wordwrap($msg,75,' ',1); if (isset($answer)) { // Формируем строку ответа для Гостя/Модера/Адина $lines = file("faqbase.dat"); $answer=count($lines)-$answer; $dt=explode("|", $lines[$answer]); $dt[0]=str_replace("
","\r\n", $dt[0]); $dt[0]=str_replace("

",'\n\n',$dt[0]); $dt[0]=str_replace("
",'\n',$dt[0]); $dt[6]=str_replace("
","\r\n", $dt[6]); $dt[6]=str_replace("

",'\n\n',$dt[6]); $dt[6]=str_replace("
",'\n',$dt[6]); $dt[8]=str_replace("
","\r\n", $dt[8]); $dt[8]=str_replace("

",'\n\n',$dt[8]); $dt[8]=str_replace("
",'\n',$dt[8]); $dt[10]=str_replace("
","\r\n", $dt[10]); $dt[10]=str_replace("

",'\n\n',$dt[10]); $dt[10]=str_replace("
",'\n',$dt[10]); $text="$dt[0]|$dt[1]|$dt[2]|$dt[3]|$dt[4]|$name|$msg|$dt[7]|$dt[8]|$dt[9]|$dt[10]|"; // если отвечает гость if ($status=="1" and $pass==$passmoder) {$text="$dt[0]|$dt[1]|$dt[2]|$dt[3]|$dt[4]|$dt[5]|$dt[6]|$name|$msg|$dt[9]|$dt[10]|"; $ok="1";} if ($status=="2" and $pass==$passadmin) {$text="$dt[0]|$dt[1]|$dt[2]|$dt[3]|$dt[4]|$dt[5]|$dt[6]|$dt[7]|$dt[8]|$name|$msg|"; $ok="1";} if ($status!="0" and !isset($ok)) {print"$back Введённый Вами пароль Модератора / Администратора не верен!"; exit;} } else { $text="$msg|$name|$email|$date|$time|||||||"; } $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); if (!isset($answer)) { $fp=fopen("faqbase.dat","a+"); flock ($fp,LOCK_EX); fputs($fp,"$text\r\n"); flock ($fp,LOCK_UN); fclose($fp); @chmod("$fp", 0644); if ($sendmail=="1") { // отправка сообщения админу на мыло $headers=null; $headers.="Content-Type: text/plan; 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).'Новое сообщение в FAQ: 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); // Отправляем письмо майлеру на съедение ;-) } } else { // if (!sset($answer)) $file=file("faqbase.dat"); $fp=fopen("faqbase.dat","a+"); flock ($fp,LOCK_EX); ftruncate ($fp,0);//УДАЛЯЕМ СОДЕРЖИМОЕ ФАЙЛА for ($i=0;$i< sizeof($file);$i++) {if ($answer!=$i) {fputs($fp,$file[$i]);} else {fputs($fp,"$text\r\n");}} fflush ($fp);//очищение файлового буфера flock ($fp,LOCK_UN); fclose($fp); @chmod("$fp", 0644); } print "$shapka
Спасибо, $name, Ваше сообщение успешно добавлено.

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

Нажмите здесь, если не хотите больше ждать
"; exit; } } // Типо главной страницы include("images/top.html"); // подключаем ШАПКУ форума if (!isset($_GET['page'])) {$page=1;} else {$page=$_GET['page'];} print "

$gname

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

$maintext

"; if (isset($_GET['event'])) { if ($_GET['event']=="new") { if (isset($_GET['answer'])) {$answer=$_GET['answer']; $keyx=md5(1234); print" "; // АНТИСПАМ---- if ($antispam!="0") { 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"

Ответить на $answer сообщение
Имя:
Сообщение:
Защитный код:"; 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"
Статус/Пароль:   
* Статус/Пароль используется для ответа Модератора или Администратора.
Для ответа гостя пароль не требуется.

"; } else { print "
Добавить сообщение
Имя и E-mail

Сообщение
$s1 $s2 $s3 $s4 $s5 $s6 $s7 $s8 $s9 $s10 $s11 RB
 
"; // АНТИСПАМ---- if ($antispam!="0") { 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("faqbase.dat"); $maxi=count($lines)-1; // выводим СПИСОК доступных номеров СТРАНИЦ ВВЕРХУ if (isset($_GET['page'])) {$page=$_GET['page'];} else {$page="1";} if ($page==0) {$page="1";} else {$page=abs($page);} // Выводим qq сообщений на текущей странице $maxpage=ceil(($maxi+1)/$qq); if ($page>$maxpage) {$page=$maxpage;} $fm=$maxi-$qq*($page-1); if ($fm<"0") {$fm=$qq;} $lm=$fm-$qq; if ($lm<"0") {$lm="-1";} do { $dt=explode("|", $lines[$fm]); $num=1+$maxi-$fm; $fm--; // заменяем текстовые смайлики на графические $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]=eregi_replace("((https?|ftp)://[[:alnum:]_=/-]+(\\.[[:alnum:]_=/-]+)*(/[[:alnum:]+&._=/%]*(\\?[[:alnum:]?+&_=/%]*)?)?)", "\\1", $dt[0]); $faqadd=""; if (strlen($dt[5])>1) {$faqadd.="Отвечает гость $dt[5]:
$dt[6]";} if (strlen($dt[7])>1) {$faqadd.="$answerm $dt[7]: $dt[8]";} if (strlen($dt[9])>1) {$faqadd.="$answera $dt[9]: $dt[10]";} $ddt=explode(".", $dt[3]); $md=$ddt[1]-1; $ddt[1]=$months[$md]; print"\r\n
$faqadd
Вопрос от $dt[1] $ddt[0] $ddt[1] $ddt[2] г., $dt[4]

$dt[0]

Ответитьсообщение $num

"; } while($lm < $fm); // выводим СПИСОК доступных номеров СТРАНИЦ ВНИЗУ print "Страницы:  "; for($i=0; $i<$maxi+1;) {$ip=$i/$qq+1; if ($page==$ip) {print "$ip  ";} else {print "$ip  ";} $i=$i+$qq;} require ('images/bottom.html'); ?>