// WR-Simpleboard v 1.4.1 // 28.03.11 г. // Miha-ingener@yandex.ru
// сделать проверку на номер страницы, если не существующий - NOINDEX
// может быть FINDER вшить внутрь index.php, чтобы поменьше файлов было
// написать ещё один-два скина для доски включая стили!
header('Content-Type: text/html; charset=windows-1251');
error_reporting (E_ALL); // ВРЕМЕННО - на время тестирования и отладки скрипта!
// error_reporting(0); // РАЗКОМЕНТИРУЙТЕ для постоянной работы!!!
@ini_set('register_globals','off');// Все скрипты написаны для этой настройки php
include "config.php";
$mainpage="../"; // Ссылка на главную страницу
$shapka="
";
// БЛОК показывает ВЕСТЬ ТЕКСТ ОДНОГО ОБЪЯВЛЕНИЯ
if (isset($_GET['id'])) { if ($_GET['id']!="") {
// Запрещаем индексацию страниц, с окончивщимся сроком размещения
$fullshapka=str_replace("",'',$fullshapka);
print"$fullshapka";
$lines=file("data/simpleboard.dat"); $itogo=count($lines);
$viewmsg=$_GET['id']+1; $last=$itogo-2;
if ($viewmsg>$itogo or $viewmsg<-1) exit("Срок размещения данного объявления окончен. Вы можете перейти на главную страницу доски или на последнее размещённое объявление.");
$dt=explode("|",$lines[$viewmsg]);
$dt[4]=replacer($dt[4]);
$dt[4]=str_replace("[b]","", $dt[4]); $dt[4]=str_replace("[/b]","", $dt[4]);
$dt[4]=str_replace("[RB]","", $dt[4]); $dt[4]=str_replace("[/RB]","", $dt[4]);
$dt[4]=replace_links($dt[4]);
$deldate=date("d.m.Y",$dt[7]); // конвертируем дату удаления в человеческий формат
$fd=explode(".",$dt[5]);
$then=mktime(0,0,0,$fd[1],$fd[0],$fd[2]);
$firstday=round(($dt[7]-$then)/86400); // формируем кол-во дней леквидности объявления
$today=time();
$tektday=round(($today-$then)/86400); // формируем кол-во дней прошедших со дня подачи объявления
print"
";
exit; } }
// Блок ДОБАВЛЕНИЯ ОБЪЯВЛЕНИЯ
if (isset($_GET['save'])) {
// возвращаем значения данных из формы и присваиваем их переменным
if (isset ($_POST['name']) & isset ($_POST['msg']) & isset ($_POST['email'])) {$name=$_POST['name']; $msg=$_POST['msg']; $email=$_POST['email'];} else exit;
if (isset($_GET['page'])) $page=$_GET['page']; else $page=1;
sleep(1); // мелкая защита от БОТОВ. Человеку секунда не время - а прога по подбору ключа - будет работать долго и не загружать сервер
//--А-Н-Т-И-С-П-А-М--проверка кода--
if ($antispam==TRUE and !isset($_COOKIE['wrfcookies'])) {
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 (strlen($msg)<50 || strlen($msg)>$maxmsg) exit("$shapka $back ваше сообщение содержит или менее 50 символов или превышает $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)>30 and $email!="") exit("$shapka $back и введите корректный E-mail адрес!
");
$url=$_POST['url']; if (strlen($url) > 50) exit("$shapka $back Вы ввели слишком длинный URL. Он превышает 50 символов!");
$zag=$_POST['zag']; if ($zag == "" || strlen($zag) > $maxzag) exit("$shapka $back Вы не ввели заголовок объявления, или он превышает $maxzag символов!");
$days=$_POST['days']; if ($days>"90") $days="90";
$deldt=time()+$days*86400-86400; // формируем дату удаления объявления
$name=str_replace("|","I",$name);
$zag=str_replace("|","I",$zag);
$url=str_replace("|","I",$url);
$msg=str_replace("|","I",$msg);
if (preg_match ("/(href)/", $msg)) exit("$shapka $back. Неудача! Из-за частого СПАМА публикация ссылок в объявлениях запрещена!");
$name=wordwrap($name,24,' ',1); // разрываем слишком длинные строки
$msg=wordwrap($msg,75,' ',1);
$text="$name|$email|$zag|$url|$msg|$date|$time|$deldt|||"; $text=replacer($text);
$fp=fopen("data/simpleboard.dat","a+");
flock ($fp,LOCK_EX);
fputs($fp,"$text\r\n");
fflush ($fp);
flock ($fp,LOCK_UN);
fclose($fp);
@chmod("$fp",0644);
if ($sendmail==TRUE) { // отправка сообщения админу на мыло
$headers=""; // Настройки для отправки писем
$headers.="Content-Type: text/html; charset=windows-1251\r\n";
$headers.="From: ".$name." <".$email.">\r\n";
$headers.="X-Mailer: WR-Sendmail PHP/".phpversion();
// Собираем всю информацию в теле письма
$allmsg = $sbrdname.chr(13).chr(10).'Новое объявление : '.$surl.chr(13).chr(10).'Имя: '.$name.chr(13).chr(10).'E-mail: '.$email.chr(13).chr(10).'Сообщение: '.$msg.chr(13).chr(10);
mail("$adminemail", "$sbrdname (объявление)", $allmsg, $headers); // Отправляем письмо майлеру на съедение ;-)
}
print "$shapka
Спасибо, $name, Ваше сообщение успешно добавлено.
Через несколько секунд Вы будете автоматически перемещены на главную страницу доски объявлений.
";
exit; }
// ГЛАВНАЯ СТРАНИЦА ДОСКИ
print "$fullshapka";
if (isset($_GET['add'])) { // ЕСЛИ нажата кнопка добавить сообщение - то выводим форму
print "
Добавление объявления
"; }
// ВЫВОДИМ 1-ую страницу с ОБЪЯВЛЕНИЯМИ
if (is_file("data/simpleboard.dat")) { // проверяем есть данные в файле
$lines=file("data/simpleboard.dat");
$itogo=count($lines); $maxi=$itogo-1;
// функция АВТОУДАЛЕНИЯ здесь!
if ($itogo>0) {
$tekdate=time(); $i="0"; $newi="-1"; $todelete="0";
do {$dt=explode("|",$lines[$i]);
if ($dt[7]<$tekdate) {$todelete++;} else {$newi++; $newlines[$newi]=$lines[$i];} $i++;
} while($i<$itogo);
if (isset($newlines)) {$newitogo=count($newlines)-1;} else {$newitogo="0"; $newlines[0]="";}
if ($todelete>"0") {
$fp=fopen("data/simpleboard.dat","a+");
flock ($fp,LOCK_EX);
ftruncate ($fp,0);//УДАЛЯЕМ СОДЕРЖИМОЕ ФАЙЛА
for ($i=0; $i <= $newitogo; $i++) {fputs($fp,$newlines[$i]);}
flock ($fp,LOCK_UN);
fclose($fp);
// считываем данные раздела в память вновь - так как мы удалили просроченные
$lines = file("data/simpleboard.dat");
$itogo=count($lines); $maxi=$itogo-1;
} // функция АВТОУДАЛЕНИЯ выше!
} // if ($itogo>0)
$itogo=count($lines); $maxi=$itogo-1;
if ($itogo>0) {
$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";}
print "";
if (is_file("data/reklama.html")) include"data/reklama.html";
print"
";
$cm=1;
do { $dt=explode("|", $lines[$fm]); $num=1+$maxi-$fm;
$fm--;
if (strlen($dt[4])>400) {$dt[4]=substr($dt[4],0,380); $dt[4]=preg_replace("#([^\[img\]])(http|https|ftp|goper):\/\/([a-zA-Z0-9\.\?&=\;\-\/_]+)([\W\s<\[]+)#i", "\\1ссылка\\4", $dt[4]); $dt[4].="... Подробнее...";}
else $dt[4]=preg_replace("#([^\[img\]])(http|https|ftp|goper):\/\/([a-zA-Z0-9\.\?&=\;\-\/_]+)([\W\s<\[]+)#i", "\\1ссылка\\4", $dt[4]);
$dt[4]=preg_replace('#\[img\](.+?)\[/img\]#','рисунок', $dt[4]);
$dt[4]=str_replace("[b]","",$dt[4]); $dt[4]=str_replace("[/b]","",$dt[4]);
$dt[4]=str_replace("[RB]","",$dt[4]); $dt[4]=str_replace("[/RB]","",$dt[4]);
$dt[4]=str_replace(" "," ",$dt[4]); $dt[4]=wordwrap($dt[4],50,' ',1);
$deldate=date("d.m.Y",$dt[7]); // конвертируем дату удаления в человеческий формат
$fd=explode(".",$dt[5]);
$then=mktime(0,0,0,$fd[1],$fd[0],$fd[2]);
$firstday=round(($dt[7]-$then)/86400); // формируем кол-во дней леквидности объявления
$today=time();
$tektday=round(($today-$then)/86400); // формируем кол-во дней прошедших со дня подачи объявления
$tday=($dt[7]-$then)/86400;
if (strlen($dt[0])>12) {$dt[0]=substr($dt[0],0,9); $dt[0].="...";}
$dtitle=$dt[2]; if (strlen($dt[2])>22) {$dt[2]=substr($dt[2],0,19); $dt[2].="...";}
// ДЕЛИМ ВСЕ РУБРИКИ на столбцы
if ((round(($num-1)/$colrub)*$cm)==(($num-1)/$colrub)*$cm) {$cm++; print "