",'>',$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 unreplacer ($text) { // ФУНКЦИЯ замены спецсимволов конца строки на обычные $text=str_replace("<br>","
",$text); $text=str_replace("|","|",$text); return $text;} function nospam() { global $max_key,$rand_key; // Функция АНТИСПАМ 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'Защитный код: '; for ($i=0; $i<$max_key; $i++) { $snum[$i]=mt_rand(0,9); $psnum=md5($snum[$i]+$rand_key+$dopkod); echo "\n"; $xkey=$xkey.$snum[$i];} $xkey=md5("$xkey+$rand_key+$dopkod"); //число + ключ из data/config.php + код меняющийся кажые 24 часа print" "; return; } // Выбран ВЫХОД - очищаем куки if(isset($_GET['event'])) { if ($_GET['event']=="clearcooke") { setcookie("wrforumm","",time()-3600); Header("Location: index.php"); exit; } } if (isset($_COOKIE['wrforumm'])) { // Сверяем имя/пароль из КУКИ с заданным в конфиг файле $text=$_COOKIE['wrforumm']; $text=trim($text); // Вырезает ПРОБЕЛьные символы if (strlen($text)>60) exit("Попытка взлома - длина переменной куки сильно большая!"); $text=replacer($text); $exd=explode("|",$text); $name1=$exd[0]; $pass1=$exd[1]; if (($name1!=$adminname and $name1!=$modername) or ($pass1!=$adminpass and $pass1!=$moderpass)) {sleep(1); setcookie("wrforumm", "0", time()-3600); Header("Location: admin.php"); exit;} } else { // ЕСЛИ ваще нету КУКИ if (isset($_POST['name']) & isset($_POST['pass'])) { // Если есть переменные из формы ввода пароля $name=str_replace("|","I",$_POST['name']); $pass=str_replace("|","I",$_POST['pass']); $text="$name|$pass|"; $text=trim($text); // Вырезает ПРОБЕЛьные символы if (strlen($text)<4) exit("$back Вы не ввели имя или пароль!"); $text=replacer($text); $exd=explode("|",$text); $name=$exd[0]; $pass=$exd[1]; //$msg_onpage=md5("$pass+$skey"); exit("$msg_onpage"); // РАЗБЛОКИРУЙТЕ для получения MD5 своего пароля! //--А-Н-Т-И-С-П-А-М--проверка кода-- if ($antispam==TRUE) { 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("введён ОШИБОЧНЫЙ код!");} // Сверяем введённое имя/пароль с заданным в конфиг файле и пишем в лог инфу $tektime=time(); $verno="0"; if ($name==$adminname & md5("$pass+$skey")==$adminpass) $verno="1"; if ($name==$modername & md5("$pass+$skey")==$moderpass) $verno="1"; $fp=fopen("$datadir/adminlog.dat","a+"); flock ($fp,LOCK_EX); fputs($fp,"$tektime|$verno|$name|0||\r\n"); fflush ($fp); flock ($fp,LOCK_UN); fclose($fp); // присваиваются куки АДМИНИСТРАТОРУ if ($name==$adminname & md5("$pass+$skey")==$adminpass) {$wrforumm="$adminname|$adminpass|$tektime|"; setcookie("wrforumm", $wrforumm, time()+18000); Header("Location: admin.php"); exit;} // присваиваются куки МОДЕРАТОРУ if ($name==$modername & md5("$pass+$skey")==$moderpass) {$wrforumm="$modername|$moderpass|$tektime|"; setcookie("wrforumm", $wrforumm, time()+18000); Header("Location: admin.php"); exit;} exit("Ваши данные ОШИБОЧНЫ!"); } else { // если нету данных, то выводим ФОРМУ ввода пароля echo '


Администрирование форума 2.0
Введите логин:
Введите пароль:
'; if ($antispam==TRUE) nospam(); // АНТИСПАМ ! print"


Powered by WR-Forum Professional © 2.0
"; exit;} } // АВТОРИЗАЦИЯ ПРОЙДЕНА! $gbc=$_COOKIE['wrforumm']; $gbc=explode("|", $gbc); $gbname=$gbc[0];$gbpass=$gbc[1];$gbtime=$gbc[2]; if ($gbname==$adminname) $ktotut="1"; else $ktotut="2"; // Кто вошёл: админ или модер? // URL форума! $host=$_SERVER["HTTP_HOST"]; $self=$_SERVER["PHP_SELF"]; $forum_url="http://$host$self"; $forum_url=str_replace("admin.php", "", $forum_url); // РАССЫЛКА сообщений участникам форума if(isset($_GET['event'])) { if ($_GET['event']=="rassilochka") { $name=replacer($_POST['name']); $email=replacer($_POST['email']); if (isset($_POST['autoscribe'])) $autoscribe="1"; else $autoscribe="0"; $userdata=replacer($_POST['userdata']); if (strlen($userdata)<5) exit("Вы не выбрали участника форума, которому отправялем сообщение!"); $dt=explode("|", $userdata); $username=$dt[1]; $useremail=$dt[2]; $msg=$_POST['msg']; if ($autoscribe!="1") { // Разово записываем текст рассылки в шаблон! $fp=fopen("$datadir/mailtext.dat","w"); flock ($fp,LOCK_EX); fputs($fp,$msg); fflush ($fp); flock ($fp,LOCK_UN); fclose($fp);} // Для Выбора схемы - раскоментируйте её и закоментируйте текущую символами // //$bdcolor="#79BBEF"; $fcolor="#00293E"; // Светлоголубой $bdcolor="#FF9A00"; $fcolor="#833C07"; // Оранжевый //$bdcolor="#FFE51A"; $fcolor="#FF8000"; // Жёлто-оранжевый //$bdcolor="#00E900"; $fcolor="#005300"; // Светло-зеленый //$bdcolor="#FB5037"; $fcolor="#620000"; // Красный //$bdcolor="#800080"; $fcolor="#350035"; // Сиреневенький //$bdcolor="#007800"; $fcolor="#000000"; // Темно зеленый //$bdcolor="#D2A500"; $fcolor="#4A3406"; // Золотой //$bdcolor="#BCC0C0"; $fcolor="#646464"; // Серый //$bdcolor="#FFA8FF"; $fcolor="#800080"; // Розовый // ТАБЛИЦА стилей зарыта ЗДЕСЬ !!! $shapka=" "; // Настройки для отправки писем $headers=null; $headers.="From: $name <$email>\n"; $headers.="X-Mailer: PHP/".phpversion()."\n"; $headers.="Content-Type: text/html; charset=windows-1251"; $msg=str_replace("\r\n", "
",$msg); $msg=str_replace("%name", "$username",$msg); $msg=str_replace("%forum_name", "$forum_name",$msg); $msg=str_replace("%forum_urllogin", "".$forum_url."tools.php?event=login",$msg); $msg=str_replace("%forum_url", "$forum_url",$msg); // Собираем всю информацию в теле письма $allmsg="$shapka
Сообщение c сайта \"$forum_url\"

Имя

$name

E-mail

$email

Дата отправки:

$date г. в $time

Сообщение

$msg
"; $printmsg="$allmsg

Cообщение успешно отправлено

"; $allmsg.="


* Это сообщение отправлено с форума."; mail("$useremail", "Сообщение с сайта: $forum_name", $allmsg, $headers); // Отправляем письмо майлеру на съедение ;-) print "$printmsg"; exit; }} if (isset($_GET['newuserpass'])) { // АДМИН меняет пароль юзеру if (isset($_POST['newpass'])) {$newpass=replacer($_POST['newpass']); $email=replacer($_GET['email']); $newpass=md5("$newpass"); // Шифруем пароль пользователя в МД5 // Ищем юзера с таким емайлом. Если есть - меняем $email=strtolower($email); unset($fnomer); unset($ok); $oldpass=""; $lines=file("$datadir/user.php"); $ui=count($lines); $i=$ui; do {$i--; $rdt=explode("|",$lines[$i]); $rdt[5]=strtolower($rdt[5]); if ($rdt[5]===$email) {$oldpass=$rdt[3]; $fnomer=$i; $name=$rdt[2];} } while($i > 1); if (isset($fnomer)) { // обновление строку юзера в БД $i=$ui; $dt=explode("|", $lines[$fnomer]); $txtdat=$lines[$fnomer]; $txtdat=str_replace("$name|$oldpass","$name|$newpass",$txtdat); $fp=fopen("$datadir/user.php","a+"); flock ($fp,LOCK_EX); ftruncate ($fp,0);//УДАЛЯЕМ СОДЕРЖИМОЕ ФАЙЛА for ($i=0;$i<=(sizeof($lines)-1);$i++) {if ($i==$fnomer) fputs($fp,"$txtdat"); else fputs($fp,$lines[$i]);} fflush ($fp); flock ($fp,LOCK_UN); fclose($fp); } Header("Location: admin.php?event=userwho"); exit; }} // Блок удаления ВСЕХ НЕАКТИВИРОВАННЫХ УЧАСТНИКОВ if(isset($_GET['delalluser'])) { $records=" rn|time|name|password|zvezda|email|pol|drdate|delta_gmt|user_skin|icq|url|gorod|interes|sign|avatar|activation|\r\n"; $file=file("$datadir/user.php"); $maxi=count($file)-1; $i=0; $fp=fopen("$datadir/user.php","w"); // удаляем строки с не активированными записями участников flock ($fp,LOCK_EX); do { $i++; $dt=explode("|",$file[$i]); if ($dt[16]==FALSE) $records=$records; else $records.=$file[$i]; } while($i<$maxi); ftruncate ($fp,0); fputs($fp, $records); flock ($fp,LOCK_UN); fclose($fp); Header("Location: admin.php?newstatistik"); exit; } // Добавление IP-юзера в БАН if (isset($_GET['badip'])) { if (isset($_POST['ip'])) $ip=$_POST['ip']; if (isset($_POST['to_time'])) $to_time=$_POST['to_time']; else $to_time="1"; if (isset($_GET['ip_get'])) {$ip=$_GET['ip_get']; $msg="За добавление нежелательных сообщений на форум! ЗА СПАМ!!!";} else $msg=$_POST['text']; if (strlen($ip)<8) exit("Введите IP по формату X.X.X.X, где Х - число от 1 до 255! Сейчас запрос пуст или IP НЕ указан!"); $from_time=time(); $to_time=$from_time+86400*$to_time*31; // Заблокирован с по такой то даты $lock="0"; // Блокировка только на запись? 1 - полная. На чтение в том числе (пока не реализовано) $text="$from_time|$to_time|$ip|$lock|$msg||"; $text=stripslashes($text); $text=htmlspecialchars($text,ENT_COMPAT,"windows-1251"); $text=str_replace("\r\n", "
", $text); $fp=fopen("$datadir/ipblock.dat","a+"); flock ($fp,LOCK_EX); fputs($fp,"$text\r\n"); fflush ($fp); flock ($fp,LOCK_UN); fclose($fp); Header("Location: admin.php?event=blockip"); exit; } // Удаления юзера из БАНА if (isset($_GET['delip'])) { $xd=$_GET['delip']; $file=file("$datadir/ipblock.dat"); $dt=explode("|",$file[$xd]); $fp=fopen("$datadir/ipblock.dat","w"); flock ($fp,LOCK_EX); for ($i=0;$i< sizeof($file);$i++) { if ($i==$xd) unset($file[$i]); } fputs($fp, implode("",$file)); flock ($fp,LOCK_UN); fclose($fp); Header("Location: admin.php?event=blockip"); exit; } // АКТИВАЦИЯ пользователя if(isset($_GET['event'])) { if ($_GET['event']=="activate") { $key=$_GET['key']; $email=$_GET['email']; $page=$_GET['page']; // защиты от взлома по ключу и емайлу if (strlen($key)<6 or strlen($key)>6 or !ctype_digit($key)) exit("$back. Вы ошиблись при вводе ключа. Ключ может содержать только 6 цифр."); $email=stripslashes($email); $email=htmlspecialchars($email,ENT_COMPAT,"windows-1251"); $email=str_replace("|","I",$email); $email=str_replace("\r\n","
",$email); if (strlen($key)>30) exit("Ошибка при вводе емайла"); // Ищем юзера с таким емайлом и ключом. Если есть - меняем статус на пустое поле $email=strtolower($email); unset($fnomer); unset($ok); $lines=file("$datadir/user.php"); $ui=count($lines); $i=$ui; do {$i--; $rdt=explode("|",$lines[$i]); $rdt[5]=strtolower($rdt[5]); if ($rdt[5]===$email and $rdt[16]===$key) {$name=$rdt[2]; $pass=$rdt[3]; $fnomer=$i;} if ($rdt[5]===$email and $rdt[16]==="") $ok="1"; } while($i > 1); if (isset($fnomer)) { // обновление строки юзера в БД $i=$ui; $dt=explode("|", $lines[$fnomer]); $txtdat="$dt[0]|$dt[1]|$dt[2]|$dt[3]|$dt[4]|$dt[5]|$dt[6]|$dt[7]|$dt[8]|$dt[9]|$dt[10]|$dt[11]|$dt[12]|$dt[13]|$dt[14]|$dt[15]|$dt[16]|"; $fp=fopen("$datadir/user.php","a+"); flock ($fp,LOCK_EX); ftruncate ($fp,0);//УДАЛЯЕМ СОДЕРЖИМОЕ ФАЙЛА for ($i=0;$i<=(sizeof($lines)-1);$i++) {if ($i==$fnomer) fputs($fp,"$txtdat\r\n"); else fputs($fp,$lines[$i]);} fflush ($fp); flock ($fp,LOCK_UN); fclose($fp); } if (!isset($fnomer) and !isset($ok)) exit("$back. Вы ошиблись в воде активационного ключа или емайла.
"); if (isset($ok)) $add="Запись активирована ранее"; else $add="$name, Пользователь успешно зарегистрирован."; print"
Спасибо, $add.

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

ДАЛЬШЕ >>>
"; exit; } } if(isset($_GET['delfile'])) { // Блок УДАЛЕНИЯ / обнуления любого файла по маске if ($_GET['delfile']=="chat") {unlink ("$datadir/chat.dat"); $fp=fopen("$datadir/chat.dat","a+");} if ($_GET['delfile']=="adminlog") unlink ("$datadir/adminlog.dat"); if ($_GET['delfile']=="ipblock") unlink ("$datadir/ipblock.dat"); Header("Location: admin.php"); exit;} // Блок ПЕРЕСЧЁТА кол-ва тем и сообщений +++ 08.2012 г. if(isset($_GET['event'])) { if ($_GET['event']=="revolushion") { $mainlines=file("$datadir/wrforum.dat"); $countmf=count($mainlines)-1; $i="-1";$u=$countmf-1;$k="0"; do {$i++; $dt=explode("|",$mainlines[$i]); if ($dt[3]==FALSE) { $fid=$dt[2]; if ((is_file("$datadir/$fid.dat")) && (sizeof("$datadir/$fid.dat")>0)) { $fl=file("$datadir/$fid.dat"); $kolvotem=count($fl); $kolvomsg="0"; for ($itf=0; $itf<$kolvotem; $itf++) { $forumdt=explode("|",$fl[$itf]); $id="$forumdt[2]$forumdt[3]"; $tema="$forumdt[5]"; if ((!ctype_digit($id)) or (strlen($id)!=7)) print"- В теме с названием '$tema': index.php?id=$fid ' есть ошибка: Потерян идентификатор, то есть потеряна тема
"; else { if (is_file("$datadir/$id.dat")) { $msgfile=file("$datadir/$id.dat"); $countmsg=count($msgfile); $kolvomsg=$kolvomsg+$countmsg; } else print"- Проблема с темой с названием '$tema': index.php?id=$id - отсутствует файл с темой (видимо была удалена некорректно)!
"; } } // for if ($kolvotem=="0") {$dt[11]=""; $dt[12]=""; $dt[13]=""; $dt[14]="";} $mainlines[$i]="$dt[0]|$dt[1]|$dt[2]|$dt[3]|$dt[4]|$dt[5]|$kolvotem|$kolvomsg|$dt[8]|$dt[9]|$dt[10]|$dt[11]|$dt[12]|$dt[13]|$dt[14]|\r\n"; } else { $kolvotem="0"; $kolvomsg="0"; $mainlines[$i]="$dt[0]|$dt[1]|$dt[2]|$dt[3]|$dt[4]|$dt[5]|$kolvotem|$kolvomsg|$dt[8]|$dt[9]|$dt[10]|$dt[11]|$dt[12]|$dt[13]|$dt[14]|\r\n";} } else $mainlines[$i]="$dt[0]|$dt[1]|$dt[2]|$dt[3]|$dt[4]||0|0|0|0|0|||||\r\n"; } while($i < $countmf); // сохраняем обновлённые данные о кол-ве тем и сообщений в файле $file=file("$datadir/wrforum.dat"); $fp=fopen("$datadir/wrforum.dat","w"); flock ($fp,LOCK_EX); for ($i=0;$i< sizeof($file);$i++) fputs($fp,$mainlines[$i]); flock ($fp,LOCK_UN); fclose($fp); print "



Всё успешно пересчитано.
"; exit; }} // Блок удаления УЧАСТНИКА ФОРУМА if (isset($_GET['usersdelete'])) { $usersdelete=$_GET['usersdelete']; $first=$_POST['first']; $last=$_POST['last']; $page=$_GET['page']; $delnum=null; $i=0; // Сравнимаем кол-во строк в файле ЮЗЕРОВ и их СТАТИСТИКУ if (count(file("$datadir/user.php")) != count(file("$datadir/userstat.dat"))) exit("Статистика участников повреждена! Запустите блок: 'Пересчитать статистику участников',
а затем уже можно будет удалять участников!"); do {$dd="del$first"; if (isset($_POST["$dd"])) { $delnum[$i]=$first; $i++;} $first++; } while ($first<=$last); $itogodel=count($delnum); $newi=0; if ($delnum=="") exit("Сделайте выбор хотябы одного участника!"); $file=file("$datadir/user.php"); $itogo=sizeof($file); $lines=null; $delyes="0"; for ($i=0; $i<$itogo; $i++) { // цикл по файлу с данными for ($p=0; $p<$itogodel; $p++) {if ($i==$delnum[$p]) $delyes=1;} // цикл по строкам для удаления // если нет метки на удаление записи - формируем новую строку массива, иначе - нет if ($delyes!=1) {$lines[$newi]=$file[$i]; $newi++;} else $delyes="0"; } // пишем новый массив в файл $newitogo=count($lines); $fp=fopen("$datadir/user.php","w"); flock ($fp,LOCK_EX); // если всех юзеров удаляем, тогда ничего туда ВПУТИТЬ :-)) if (isset($lines[0])) { for ($i=0; $i<$newitogo; $i++) fputs($fp,$lines[$i]); } else fputs($fp,""); flock ($fp,LOCK_UN); fclose($fp); // Удаляем инфу о юзере из блока статистики - ДОРАБОТАТЬ блок!!!! // сейчас делаю просто удалить ту запись, которая соответствует номеру // но в идеале нужно проверять всю статистику и собирать файл // заново - чтобы исключить любые ошибки $file=file("$datadir/userstat.dat"); $itogo=sizeof($file); $lines=null; $delyes="0"; $newi=0; for ($i=0; $i<$itogo; $i++) { // цикл по файлу с данными for ($p=0; $p<$itogodel; $p++) {if ($i==$delnum[$p]) $delyes=1;} // цикл по строкам для удаления // если нет метки на удаление записи - формируем новую строку массива, иначе - нет if ($delyes!=1) {$lines[$newi]=$file[$i]; $newi++;} else $delyes="0"; } // пишем новый массив в файл $newitogo=count($lines); $fp=fopen("$datadir/userstat.dat","w"); flock ($fp,LOCK_EX); // если статистику всех юзеров удаляем, тогда ничего туда ВПУТИТЬ :-)) if (isset($lines[0])) {for ($i=0; $i<$newitogo; $i++) fputs($fp,$lines[$i]);} else fputs($fp,""); flock ($fp,LOCK_UN); fclose($fp); Header("Location: admin.php?event=userwho&page=$page"); exit; } if(isset($_GET['newstatistik'])) { // Блок ПЕРЕСЧЁТА СТАТИСТИКИ участников $lines=null; $ok=null; // 1. Открываем и считываем в память файл с юзерами $ulines=file("$datadir/user.php"); $ui=count($ulines); // 2. Открываем файл статистики $slines=file("$datadir/userstat.dat"); $si=count($slines)-1; // Цикл по кол-ву юзеров в базе for ($i=1;$i<$ui;$i++) { $udt=explode("|", $ulines[$i]); if ($i<=$si) $sdt=explode("|",$slines[$i]); else $sdt[0]=""; if ($udt[0]==$sdt[0]) {$udt[0]=str_replace("\r\n","",$udt[0]); $ok=1; if (isset($sdt[5]) and isset($sdt[6]) and isset($sdt[7]) and isset($sdt[8])) {$lines[$i]="$slines[$i]";} else {$lines[$i]="$udt[0]|0|$udt[2]|0||0|0|0|0||||\r\n";}} // если RN=RN - значит данные верны // Цикл в файле статистики - поиск строку текущего юзера if ($ok!="1") { for ($j=1;$j<$si;$j++) { $sdt=explode("|", $slines[$j]); if ($udt[0]==$sdt[0]) {$ok=1; $lines[$i]=$slines[$j]; }// если RN=RN - значит данные верны } if ($ok!="1") $lines[$i]="$udt[0]|0|$udt[2]|0||0|0|0|0||||\r\n"; // создаём юзера с нулевой статистикой } $ok=null; $ii=count($lines);} $fp=fopen("$datadir/userstat.dat","a+"); flock ($fp,LOCK_EX); ftruncate ($fp,0);//УДАЛЯЕМ СОДЕРЖИМОЕ ФАЙЛА fputs($fp,"rn_user|time|name|lock|lock_time|itogotem|itogomsg|repa|kosyaki|nikname|ip|rezerved|\r\n"); for ($i=1;$i<=$ii;$i++) fputs($fp,"$lines[$i]"); fflush ($fp); flock ($fp,LOCK_UN); fclose($fp); Header("Location: admin.php?event=userwho"); exit; } // Блок изменения СТАТУСА участника=08.2015 г. if(isset($_GET['newstatus'])) { if ($_GET['newstatus'] !="") { $newstatus=$_GET['newstatus']-1; $status=$_POST['status']; if (isset($_GET['page'])) $page=$_GET['page']; else $page=1; if (strlen($status)<3) exit("новый статус участника < 3 символов - это не серьёзно!"); $status=htmlspecialchars($status,ENT_COMPAT,"windows-1251"); $status=stripslashes($status); $status=str_replace("|"," ",$status); $status=str_replace("\r\n","
",$status); $lines=file("$datadir/userstat.dat"); $i=count($lines); $dt=explode("|", $lines[$newstatus]); $record="$dt[0]|$dt[1]|$dt[2]|$dt[3]|$dt[4]|$dt[5]|$dt[6]|$dt[7]|$dt[8]|$status|$dt[10]|$dt[11]|"; $fp=fopen("$datadir/userstat.dat","a+"); flock ($fp,LOCK_EX); ftruncate ($fp,0);//УДАЛЯЕМ СОДЕРЖИМОЕ ФАЙЛА for ($i=0;$i<=(sizeof($lines)-1);$i++) { if ($i==$newstatus) fputs($fp,"$record\r\n"); else fputs($fp,$lines[$i]); } fflush ($fp); flock ($fp,LOCK_UN); fclose($fp); Header("Location: admin.php?event=userwho&page=$page"); exit; } } // Блок изменения ЗВЁЗД участника if(isset($_GET['newreiting'])) { if ($_GET['newreiting'] !="") { $newreiting=$_GET['newreiting']-1; $reiting=$_POST['reiting']; if (isset($_GET['page'])) $page=$_GET['page']; else $page=1; $reiting=htmlspecialchars($reiting,ENT_COMPAT,"windows-1251"); $reiting=stripslashes($reiting); $reiting=str_replace("|"," ",$reiting); $reiting=str_replace("\r\n","
",$reiting); $lines=file("$datadir/user.php"); $i=count($lines); $dt=explode("|", $lines[$newreiting]); $txtdat="$dt[0]|$dt[1]|$dt[2]|$dt[3]|$reiting|$dt[5]|$dt[6]|$dt[7]|$dt[8]|$dt[9]|$dt[10]|$dt[11]|$dt[12]|$dt[13]|$dt[14]|$dt[15]|$dt[16]|"; $fp=fopen("$datadir/user.php","a+"); flock ($fp,LOCK_EX); ftruncate ($fp,0);//УДАЛЯЕМ СОДЕРЖИМОЕ ФАЙЛА for ($i=0;$i<=(sizeof($lines)-1);$i++) { if ($i==$newreiting) fputs($fp,"$txtdat\r\n"); else fputs($fp,$lines[$i]); } fflush ($fp); flock ($fp,LOCK_UN); fclose($fp); Header("Location: admin.php?event=userwho&page=$page"); exit; } } // изменяем РЕПУТАЦИЮ юзера if(isset($_GET['newrepa'])) { if (isset($_GET['page'])) $page=$_GET['page']; else $page=1; $text=$_POST['repa']; $usernum=$_POST['usernum']-1; $text=htmlspecialchars($text,ENT_COMPAT,"windows-1251"); $text=stripslashes($text); $text=str_replace("|"," ",$text); $repa=str_replace("\r\n","
",$text); $lines=file("$datadir/userstat.dat"); $dt=explode("|", $lines[$usernum]); $txtdat="$dt[0]|$dt[1]|$dt[2]|$dt[3]|$dt[4]|$dt[5]|$dt[6]|$repa|$dt[8]|$dt[9]|$dt[10]|$dt[11]|"; $fp=fopen("$datadir/userstat.dat","a+"); flock ($fp,LOCK_EX); ftruncate ($fp,0);//УДАЛЯЕМ СОДЕРЖИМОЕ ФАЙЛА for ($i=0;$i<=(sizeof($lines)-1);$i++) { if ($i==$usernum) fputs($fp,"$txtdat\r\n"); else fputs($fp,$lines[$i]); } fflush ($fp); flock ($fp,LOCK_UN); fclose($fp); Header("Location: admin.php?event=userwho&page=$page"); exit; } // Блок удаления файла, прикреплённого в сообщении if(isset($_GET['deletefoto'])) { $deletefoto=replacer($_GET['deletefoto']); $fid=replacer($_GET['fid']); $id=replacer($_GET['id']); if (is_file("$filedir/$deletefoto")) unlink ("$filedir/$deletefoto"); // удаляем файл Header("Location: admin.php?fid=$fid&id=$id"); exit;} // Добавляем/снимаем ШТРАФЫ ЮЗЕРУ if(isset($_GET['userstatus'])) { if (isset($_GET['page'])) $page=$_GET['page']; else $page=1; $text=$_POST['submit']; $status=$_POST['status']; $usernum=$_POST['usernum']-1; $text=htmlspecialchars($text,ENT_COMPAT,"windows-1251"); $text=stripslashes($text); $text=str_replace("|"," ",$text); $submit=str_replace("\r\n","
",$text); if (!ctype_digit($status)) $status=0; $status=$status+$submit; // корректируем статус (+1 или -1) if($status<0 or $status>5) exit("$back статус пользователя БОЛЬШЕ ЛИБО РАВЕН НУЛЮ, НО МЕНЬШЕ ЛИБО РАВЕН ПЯТИ!"); $lines=file("$datadir/userstat.dat"); if (!isset($lines[$usernum])) exit("ошибка! Нет такого пользователя в файле статистики!"); // если нет такой строка в файле статистики $dt=explode("|", $lines[$usernum]); $dt[6]=str_replace("\r\n","",$dt[6]); $dt[7]=str_replace("\r\n","",$dt[7]); $txtdat="$dt[0]|$dt[1]|$dt[2]|$dt[3]|$dt[4]|$dt[5]|$dt[6]|$dt[7]|$status|$dt[9]|$dt[10]|$dt[11]|"; $fp=fopen("$datadir/userstat.dat","a+"); flock ($fp,LOCK_EX); ftruncate ($fp,0);//УДАЛЯЕМ СОДЕРЖИМОЕ ФАЙЛА for ($i=0;$i<=(sizeof($lines)-1);$i++) { if ($i==$usernum) fputs($fp,"$txtdat\r\n"); else fputs($fp,$lines[$i]); } fflush ($fp); flock ($fp,LOCK_UN); fclose($fp); Header("Location: admin.php?event=userwho&page=$page"); exit; } // ДОБАВЛЕНИЕ НОВОГО ГОЛОСОВАНИЯ if (isset($_GET['event'])) { if ($_GET['event']=="voteadd") { $id=replacer($_GET['id']); $toper=replacer($_POST['toper']); // получаем данные из формы $i=1; $itgo=0; $text="$toper||\r\n"; do { $otv=replacer($_POST["otv$i"]); $otv=str_replace("|","I",$otv); $otv=str_replace("\r\n","
",$otv); $kolvo=replacer($_POST["kolvo$i"]); $kolvo=str_replace("|","I",$kolvo); $kolvo=str_replace("\r\n","
",$kolvo); if (strlen($otv)>0) {$itgo++; $text.="$otv|$kolvo|\r\n";} $i++; } while ($i<10); if ($itgo<1) exit("Должен быть хотябы ОДИН вариант ответа!"); // создаём файл с голосованием $fp=fopen("$datadir/$id-vote.dat","w"); flock ($fp,LOCK_EX); fputs($fp,"$text"); fflush ($fp); flock ($fp,LOCK_UN); fclose($fp); // создаём файл для записи IP-шников голосовавших $fp=fopen("$datadir/$id-ip.dat","w"); fflush ($fp); flock ($fp,LOCK_UN); fclose($fp); Header("Location: admin.php?id=$id"); exit; }} // КОНЕЦ добавления нового голосования // Блок Добавления/Редактирования/Удаления ГОЛОСОВАНИЯ // в процессе написания - дописать!!!! if(isset($_GET['vote'])) { $vote=$_GET['vote']; $fid=$_GET['fid']; $id=$_GET['id']; if ($vote=="delete") { // Выбрано - УДАЛЕНИЕ if (is_file("$datadir/$id-vote.dat")) {unlink ("$datadir/$id-vote.dat"); unlink ("$datadir/$id-ip.dat");}} // удаляем файлы с голосованием if ($vote=="change") { } // Выбрано - РЕДАКТИРОВАНИЕ if ($vote=="add") { if (is_file("$datadir/$id-vote.dat")) exit("$back. Голосование уже добавлено в теме. Более одного голосования добавлять нельзя!"); } // Выбрано - ДОБАВЛЕНИЕ if ($vote=="addsave") { } // Сохранение после блока добавления или редактирования Header("Location: admin.php?fid=$fid&id=$id"); exit;} // Блок ПЕРЕМЕЩЕНИЯ ВВЕРХ/ВНИЗ РАЗДЕЛА или ТОПИКА if(isset($_GET['movetopic'])) { if ($_GET['movetopic'] !="") { $move1=$_GET['movetopic']; $where=$_GET['where']; if ($where=="0") $where="-1"; $move2=$move1-$where; $file=file("$datadir/wrforum.dat"); $imax=sizeof($file); if (($move2>=$imax) or ($move2<"0")) exit(" НИЗЯ туда двигать!"); $data1=$file[$move1]; $data2=$file[$move2]; $fp=fopen("$datadir/wrforum.dat","a+"); flock ($fp,LOCK_EX); ftruncate ($fp,0);//УДАЛЯЕМ СОДЕРЖИМОЕ ФАЙЛА // меняем местами два соседних раздела for ($i=0; $i<$imax; $i++) {if ($move1==$i) fputs($fp,$data2); else {if ($move2==$i) fputs($fp,$data1); else fputs($fp,$file[$i]);}} fflush ($fp); flock ($fp,LOCK_UN); fclose($fp); Header("Location: admin.php"); exit; }} // Блок УДАЛЕНИЯ выбранного РАЗДЕЛА или ФОРУМА +++ if(isset($_GET['fxd'])) { $fid=replacer($_GET['fxd']); if ($fid=="" or strlen($fid)!=3) exit("Ошибка, выбирите рубрику для удаления, либо ошибка скрипта!"); // считываем все файлы в папке data попорядку, удалем те, которые начинаются на $fid, // (файлы с темами, голосованием -vote, IP-шниками голосования -ip, $fid - в темами) if ($handle=opendir($datadir)) { while (($file=readdir($handle)) !== false) if (!is_dir($file)) { if (strlen($file)==16 and stristr("-vote",$file)) unlink ("$datadir/$file"); // Удаляем файл с ГОЛОСОВАНИЯМИ в разделе if (strlen($file)==14 and stristr("-ip",$file)) unlink ("$datadir/$file"); // Удаляем файл с IP-голосовавших $tema=substr($file,0,3); if($tema==$fid) unlink ("$datadir/$file"); // Удаляем все темы в удаляемом РАЗДЕЛЕ // Дублирующая функция if($file=="$fid.dat") unlink ("$datadir/$fid.dat"); // Удаляем сам РАЗДЕЛ } closedir($handle); } else echo'Ошибка!'; // удаляем строку, соответствующую теме в файле со всеми темами $file=file("$datadir/wrforum.dat"); $fp=fopen("$datadir/wrforum.dat","w"); flock ($fp,LOCK_EX); for ($i=0;$i< sizeof($file);$i++) {$dt=explode("|",$file[$i]); if ($dt[2]==$fid) unset($file[$i]);} fputs($fp, implode("",$file)); flock ($fp,LOCK_UN); fclose($fp); Header("Location: admin.php"); exit; } // Блок УДАЛЕНИЯ выбранного ПОСЛЕДНЕГО СООБЩЕНИЯ или очистки всего файла с последними темами +++ if(isset($_GET['lxd'])) { $id=replacer($_GET['lxd']); if ($id=="" or strlen($id)!=7) exit("Ошибка, выбирете сообщение для удаления, либо ошибка скрипта!"); // считываем файл news.dat и удаляем строку, соответствующую сообщению в файле $file=file("$datadir/news.dat"); $fp=fopen("$datadir/news.dat","w"); flock ($fp,LOCK_EX); for ($i=0;$i< sizeof($file);$i++) {$dt=explode("|",$file[$i]); if ("$dt[2]$dt[3]"==$id) unset($file[$i]);} if ($id!="9999999") fputs($fp, implode("",$file)); flock ($fp,LOCK_UN); fclose($fp); Header("Location: admin.php"); exit; } // БЛОК ПЕРЕНУМЕРАЦИИ ТЕМЫ +++ 22.09.2012 (не используется с версии 2.0.2. Удалить в 2017 году!) if (isset($_GET['rename'])) { if ($_GET['rename'] !="") { $fid=$_GET['id']; $id_old=$_GET['rename']; $page=$_GET['page']; $id_old=substr($id_old,3,4); // ID темы хранится в самой теме, в рубрике, в 10-ке последних, на главной в последней теме // везде нужно исправить!!! везде! // 1. Считываем рубрикатор, генерируем новый ID темы // БЛОК ГЕНЕРИРУЕТ СЛЕДУЮЩИЙ ПО ПОРЯДКУ НОМЕР ТЕМЫ, начиная просмотр с 1000 * 23.09.2012 // считываем весь файл с темами в память $id=1000; $allid=null; $records=file("$datadir/$fid.dat"); $imax=count($records); $i=$imax; if ($i > 0) { do {$i--; $rd=explode("|",$records[$i]); $allid[$i]="$rd[2]$rd[3]"; } while($i>0); do $id++; while(in_array($id,$allid) or is_file("$datadir/$fid$id.dat")); } // Считываем содержимое РУБРИКИ и делаем замену |ID старый| на новый по всему файлу $rec=file_get_contents("$datadir/$fid.dat"); $rec=str_replace("|$fid|$id_old|","|$fid|$id|",$rec); $fp=fopen("$datadir/$fid.dat","w+"); flock ($fp,LOCK_EX); ftruncate ($fp,0);//УДАЛЯЕМ СОДЕРЖИМОЕ ФАЙЛА fputs($fp,"$rec"); fflush ($fp); flock ($fp,LOCK_UN); fclose($fp); rename("$datadir/$fid$id_old.dat", "$datadir/$fid$id.dat"); // Переименовываем файл $rec=file_get_contents("$datadir/$fid$id.dat"); $rec=str_replace("|$fid|$id_old|","|$fid|$id|",$rec); $fp=fopen("$datadir/$fid$id.dat","w+"); flock ($fp,LOCK_EX); ftruncate ($fp,0);//УДАЛЯЕМ СОДЕРЖИМОЕ ФАЙЛА fputs($fp,"$rec"); fflush ($fp); flock ($fp,LOCK_UN); fclose($fp); // 4. Считываем содержимое ГЛАВНОЙ и делаем замену |ID старый| на новый по всему файлу $rec=file_get_contents("$datadir/wrforum.dat"); $rec=str_replace("|$fid$id_old|","|$fid$id|",$rec); $fp=fopen("$datadir/wrforum.dat","w+"); flock ($fp,LOCK_EX); ftruncate ($fp,0);//УДАЛЯЕМ СОДЕРЖИМОЕ ФАЙЛА fputs($fp,"$rec"); fflush ($fp); flock ($fp,LOCK_UN); fclose($fp); // 5. Считываем содержимое ПОСЛЕДНИХ 20 тем и делаем замену |ID старый| на новый по всему файлу $rec=file_get_contents("$datadir/news.dat"); // Считываем содержимое $rec=str_replace("|$fid|$id_old|","|$fid|$id|",$rec); // Заменяем |ID старый| на новый по всему файлу $fp=fopen("$datadir/news.dat","w+"); flock ($fp,LOCK_EX); ftruncate ($fp,0);//УДАЛЯЕМ СОДЕРЖИМОЕ ФАЙЛА fputs($fp,"$rec"); fflush ($fp); flock ($fp,LOCK_UN); fclose($fp); // короче в цикле сделать! В начале цикл от 1 до 4-х, потом из массива имён файлов выбирать // нужный Header("Location: admin.php?id=$fid&page=$page"); exit; } } // Блок удаления выбранной ТЕМЫ [изменён в 2016г.] if (isset($_GET['xd'])) { if ($_GET['xd'] !="") { if (isset($_GET['page'])) $page=$_GET['page']; else $page="0"; $id=replacer($_GET['xd']); $fid=substr($id,0,3); $id3=substr($id,3,4); if ((!ctype_digit($id)) or (strlen($id)!=7)) exit("$back. Ошибочный идентификатор темы - xd! Ошибка скрипта. Эту тему можно удалить только вручную!"); $file=file("$datadir/$fid.dat"); if (is_file("$datadir/$id-vote.dat")) unlink("$datadir/$id-vote.dat"); // удаляем файл с ГОЛОСОВАНИЕМ if (is_file("$datadir/$id-ip.dat")) unlink("$datadir/$id-ip.dat"); // удаляем файл с голосовавшими IP $minmsg=1; $delf=null; // Считаем кол-во сообщений if (is_file("$datadir/$id.dat")) {$lines=file("$datadir/$id.dat"); $minmsg=count($lines); unlink ("$datadir/$id.dat");} // удаляем строку, соответствующую теме в файле с текущими темами $fp=fopen("$datadir/$fid.dat","w"); $kolvotem=sizeof($file)-1; // кол-во тем для уточнения на главной $newlines=null; flock ($fp,LOCK_EX); for ($i=0;$i1) rsort($newlines); $ddt=explode("|",$newlines[0]); //print_r($newlines); exit; $filename="$ddt[1].dat"; if (is_file("$datadir/$filename")) {$filedata=file("$datadir/$filename"); $imax=count($filedata)-1;} else {$imax="0"; $filedata="";} $ddt=explode("|",$filedata[$imax]); $dt[11]="$ddt[2]$ddt[3]";$dt[12]="$ddt[4]";$dt[13]="$ddt[8]";$dt[14]="$ddt[5]";}} // if-ы $text="$dt[0]|$dt[1]|$dt[2]|$dt[3]|$dt[4]|$dt[5]|$kolvotem|$dt[7]|$dt[8]|$dt[9]|$dt[10]|$dt[11]|$dt[12]|$dt[13]|$dt[14]|"; $file=file("$datadir/wrforum.dat"); $fp=fopen("$datadir/wrforum.dat","a+"); flock ($fp,LOCK_EX); ftruncate ($fp,0); for ($ii=0;$ii< sizeof($file);$ii++) { if ($mnumer!=$ii) fputs($fp,$file[$ii]); else fputs($fp,"$text\r\n"); } fflush ($fp); flock ($fp,LOCK_UN); fclose($fp); // удаляем сообщение из 15-и последних [изменён в 2016г.] $file=file("$datadir/news.dat"); $fp=fopen("$datadir/news.dat","w"); flock ($fp,LOCK_EX); for ($i=0; $i< sizeof($file); $i++) { $dt=explode("|",$file[$i]); if ($dt[2]==$fid and $dt[3]==$id3) unset($file[$i]); } fputs($fp, implode("",$file)); fflush ($fp); flock ($fp,LOCK_UN); fclose($fp); Header("Location: admin.php?id=$fid&page=$page"); exit; } } // Блок УДАЛЕНИЯ выбранного СООБЩЕНИЯ [изменён в 2016г.] if (isset($_GET['topicxd'])) { if ($_GET['topicxd'] !="") { $id=$_GET['id']; $fid=substr($id,0,3); $topicxd=$_GET['topicxd']-1; if (isset($_GET['page'])) $page=$_GET['page']; else $page="1"; $file=file("$datadir/$id.dat"); $delmsg=""; if (count($file)==1) exit("В ТЕМЕ должно остаться хотябы одно сообщение!"); $fp=fopen("$datadir/$id.dat","w"); flock ($fp,LOCK_EX); for ($i=0;$i< sizeof($file);$i++) { if ($i==$topicxd) {$dt=explode("|",$file[$i]); $username=$dt[8]; $filname=$dt[13]; $delmsg=$file[$i]; unset($file[$i]); } } fputs($fp, implode("",$file)); fflush ($fp); flock ($fp,LOCK_UN); fclose($fp); $topicxd--; if (is_file("$filedir/$filname")) unlink("$filedir/$filname"); // Удаялем прикреплённый файл $file=file("$datadir/$id.dat"); //переписываем автора последнего сообщения в теме $dt=explode("|",$file[count($file)-1]); $avtor=$dt[8]; $time=$dt[4]; $mnumer="-1"; // Блок вычитает 1-цу из кол-ва сообщений на главной $lines=file("$datadir/wrforum.dat"); $i=count($lines); // находим по fid номер строки for ($ii=0;$ii< sizeof($lines);$ii++) {$kdt=explode("|",$lines[$ii]); if ($kdt[2]==$fid and $kdt[11]==$id) $mnumer=$ii;} if ($mnumer!="-1") { // Если изменения проведены не в той теме, что указана на главной странице $dt=explode("|",$lines[$mnumer]); $dt[7]--; if ($dt[7]<0) $dt[7]="0"; $text="$dt[0]|$dt[1]|$dt[2]|$dt[3]|$dt[4]|$dt[5]|$dt[6]|$dt[7]|$dt[8]|$dt[9]|$dt[10]|$id|$time|$avtor|$dt[14]|"; $file=file("$datadir/wrforum.dat"); $fp=fopen("$datadir/wrforum.dat","a+"); flock ($fp,LOCK_EX); ftruncate ($fp,0); for ($ii=0;$ii< sizeof($file);$ii++) { if ($mnumer!=$ii) fputs($fp,$file[$ii]); else fputs($fp,"$text\r\n"); } fflush ($fp); flock ($fp,LOCK_UN); fclose($fp); } // if $mnumer!=-1 // удаляем сообщение из 15-и последних $ddt=explode("|",$delmsg); $file=file("$datadir/news.dat"); $fp=fopen("$datadir/news.dat","w"); flock ($fp,LOCK_EX); for ($i=0; $i< sizeof($file); $i++) { $dt=explode("|",$file[$i]); if ($dt[2]==$fid and $dt[3]==$ddt[3] and $dt[4]==$ddt[4]) unset($file[$i]); } fputs($fp, implode("",$file)); fflush ($fp); flock ($fp,LOCK_UN); fclose($fp); // -1 к репе и -1 к сообщению юзера! $ufile="$datadir/userstat.dat"; $ulines=file("$ufile"); $ui=count($ulines)-1; $ulinenew=""; $fileadd=0; if ($filname!=null) $fileadd=$repaaddfile; // Если юзер удаляет файл, то ему ещё -Х в РЕПУ $tektime=time(); for ($i=0;$i<=$ui;$i++) {$udt=explode("|",$ulines[$i]); if ($udt[2]==$username) { // Ищем юзера по имени в файле userstat.dat $udt[6]--; $udt[7]=$udt[7]-$fileadd-$repaaddmsg; $ulines[$i]="$udt[0]|$tektime|$udt[2]|$udt[3]|$udt[4]|$udt[5]|$udt[6]|$udt[7]|$udt[8]|$udt[9]|$udt[10]|$udt[11]|\r\n";} $ulinenew.="$ulines[$i]";} // Пишем данные в файл $fp=fopen("$ufile","w"); flock ($fp,LOCK_EX); fputs($fp,"$ulinenew"); fflush ($fp); flock ($fp,LOCK_UN); fclose($fp); Header("Location: admin.php?id=$id&page=$page#m$topicxd"); exit; } } // Добавление ФОРУМА / РАЗДЕЛА +++ if(isset($_GET['event'])) { if ($_GET['event']=="addmainforum") { $zag=$_POST['zag']; $msg=$_POST['msg']; $id="101"; $ftype=$_POST['ftype']; if ($ftype==TRUE) $ftype="1"; else $ftype="0"; $zag=str_replace("|","I",$zag); $msg=str_replace("|","I",$msg); if (strlen($zag)<3) exit("$back и введите заголовок! Его длина должна быть более 3 символов!"); // пробегаем по файлу с номерами разделов/топиков - ищем наибольшее и добавляем +1 if (is_file("$datadir/wrforum.dat")) { $lines=file("$datadir/wrforum.dat"); $imax=count($lines); $i=0; do {$dt=explode("|",$lines[$i]); if ($id<$dt[2]) $id=$dt[2]; $i++; } while($i<$imax); $id++; } if ($id<101) $id=101; if ($id>999) exit("Номер не может быть более 999"); $rn=10000+$imax*10; $record="$rn|$rn|$id|$ftype|$zag|$msg|0|0|999|0||||||"; $record=replacer($record); // создаём пустой файл с рубриками if ($ftype=="0") { $fp=fopen("$datadir/$id.dat","a+"); flock ($fp,LOCK_EX); fputs($fp,""); fflush ($fp); flock ($fp,LOCK_UN); fclose($fp); } // запись данных на главную страницу $fp=fopen("$datadir/wrforum.dat","a+"); flock ($fp,LOCK_EX); fputs($fp,"$record\r\n"); fflush ($fp); flock ($fp,LOCK_UN); fclose($fp); Header("Location: admin.php"); exit; } // Блок СОРТИРОВКИ УЧАСТНИКОВ if(isset($_GET['event'])) { if ($_GET['event']=="sortusers") { $kaksort=$_POST['kaksort']; $lines=null; // Считываем оба файла в память $dat="$datadir/user.php"; $dlines=file("$dat"); $di=count($dlines); $stat="$datadir/userstat.dat"; $slines=file("$stat"); $si=count($slines); $msguser=1000; // общее кол-во оставленных сообщений - надо считать, пробигаясь по всей БД (в блоке пересчитать статистику) if ($di!=$si) exit("$back - Необходимо Пересчитать статистику участников!!! Файл стистики повреждён!!!"); for ($i=1;$i<$di;$i++) { $dt=explode("|",$dlines[$i]); $st=explode("|",$slines[$i]); if ($dt[0]!=$st[0]) exit("$back необходимо Пересчитать статистику участников!!! Файл стистики повреждён!!!"); // при склеивании на первое место ставим нужный параметр if ($kaksort==1) {$name=strtolower($dt[2]); $prm="$name";} // 1 - Имени $dt[2] if ($kaksort==2) {$msg="0".+9999-$st[6]; $prm="$msg";} // 2 - Кол-ву сообщений $st[6] if ($kaksort==3) {$msg="0".+99-$dt[4]; $prm="$msg";} // 3 - Кол-ву звёзд dt[4] if ($kaksort==4) {$msg="0".+9000-$st[6]; $prm="$msg";} // 4 - Репутации $st[7] if ($kaksort==5) {$datereg=$dt[1]; $prm="$datereg";} // 5 - Дате регистрации $dt[1] if ($kaksort==6) {$aktiv=$st[1]; $prm="$aktiv";} // 6 - Активности $dt[1]/$st[1] // Склеиваем два файла в одну переменную $lines[$i]="$prm|$dt[0]|$dt[1]|$dt[2]|$dt[3]|$dt[4]|$dt[5]|$dt[6]|$dt[7]|$dt[8]|$dt[9]|$dt[10]|$dt[11]|$dt[12]|$dt[13]|$dt[14]|$dt[15]|$dt[16]|$st[1]|$st[2]|$st[3]|$st[4]|$st[5]|$st[6]|$st[7]|$st[8]|$st[9]|$st[10]|$st[11]|\r\n"; } // конец FOR // сортируем массив setlocale(LC_ALL,'ru_RU.CP1251'); // ! РАЗРЕШАЕМ РАБОТУ ФУНКЦИЙ, работающих с регистором и с РУССКИМИ БУКВАМИ sort($lines); // сортируем дни по возрастанию // разделяем на два массива и по очереди их сохраняем $dlines=" rn|time|name|password|zvezda|email|pol|drdate|delta_gmt|user_skin|icq|url|gorod|interes|sign|avatar|activation|\r\n"; $slines="rn_user|time|name|lock|lock_time|itogotem|itogomsg|repa|kosyaki|nikname|ip|rezerved|\r\n"; for ($i=0;$i<$di-1;$i++) { $nt=explode("|",$lines[$i]); $dlines.="$nt[1]|$nt[2]|$nt[3]|$nt[4]|$nt[5]|$nt[6]|$nt[7]|$nt[8]|$nt[9]|$nt[10]|$nt[11]|$nt[12]|$nt[13]|$nt[14]|$nt[15]|$nt[16]|$nt[17]|\r\n"; $slines.="$nt[1]|$nt[18]|$nt[19]|$nt[20]|$nt[21]|$nt[22]|$nt[23]|$nt[24]|$nt[25]|$nt[26]|$nt[27]||\r\n"; } // запись данных $fp=fopen("$datadir/user.php","a+"); flock ($fp,LOCK_EX); ftruncate ($fp,0); fputs($fp,"$dlines"); fflush ($fp); flock ($fp,LOCK_UN); fclose($fp); $fp=fopen("$datadir/userstat.dat","a+"); flock ($fp,LOCK_EX); ftruncate ($fp,0); fputs($fp,"$slines"); fflush ($fp); flock ($fp,LOCK_UN); fclose($fp); Header("Location: admin.php?event=userwho"); exit; }} // Редактирование ФОРУМА / РАЗДЕЛА if ($_GET['event']=="frdmainforum") { $fid=$_POST['fid']; $frd=$_POST['frd']; $ftype=$_POST['ftype']; $zag=$_POST['zag']; if ($zag=="") exit("$back и введите заголовок!"); $zag=str_replace("|","I",$zag); $rn1=$_POST['rn1']; $rn2=$_POST['rn2']; $msg=$_POST['msg']; $msg=str_replace("|","I",$msg); $msg=str_replace("\r\n", "
", $msg); if ($ftype==FALSE) { $addmax=$_POST['addmax']; $zvezdmax=$_POST['zvezdmax']; $kt=$_POST['kt']; $km=$_POST['km']; $idtemka=$_POST['idtemka']; $namem=$_POST['namem']; $temka=$_POST['temka']; $timetk=$_POST['timetk']; $txtmf="$rn1|$rn2|$fid|$ftype|$zag|$msg|$kt|$km|$addmax|$zvezdmax||$idtemka|$timetk|$namem|$temka|"; $txtmf=replacer($txtmf); } else $txtmf="$rn1|$rn2|$fid|$ftype|$zag|$msg|0|0|0|0|0|||||"; $txtmf=htmlspecialchars($txtmf,ENT_COMPAT,"windows-1251"); $txtmf=stripslashes($txtmf); $txtmf=str_replace("\r\n","
",$txtmf); $file=file("$datadir/wrforum.dat"); $fp=fopen("$datadir/wrforum.dat","a+"); flock ($fp,LOCK_EX); ftruncate ($fp,0);//УДАЛЯЕМ СОДЕРЖИМОЕ ФАЙЛА /////////!!!!!!!!!!!!!!!!!!!!!! if ($frd!=$i) - вариант плохой !!!!!!!! работать только по ключу // $fid или $rn!!! // БЛОК передалать!!!!!!!!!!!! for ($i=0;$i< sizeof($file);$i++) { if ($frd!=$i) fputs($fp,$file[$i]); else fputs($fp,"$txtmf\r\n"); } fflush ($fp); flock ($fp,LOCK_UN); fclose($fp); Header("Location: admin.php"); exit; } if ($_GET['event']=="rdtema") { // РЕДАКТИРОВАНИЕ ТЕМЫ [изменён в 2016г.] $rd=replacer($_POST['rd']); $id=$rd; $id_old=substr($id,3,4); // уникальный номер темы, которую необходимо заменить $id_new=$id_old; // запоминаем старый id $fid_new=$_POST['changefid']; $fid=substr($rd,0,3); if (isset($_GET['page'])) $page=$_GET['page']; else $page="0"; $zag_old=replacer($_POST['oldzag']); // старое название темы (до переименования) $name=$_POST['name']; $who=$_POST['who']; $email=$_POST['email']; $zag=replacer($_POST['zag']); if (strlen($zag)<3) exit("$back и введите заголовок ТЕМУ!"); $timetk=$_POST['timetk']; $goto=$_POST['goto']; if ($_POST['viptema']==TRUE) $viptema="1"; else $viptema="0"; if ($_POST['open_tema']==TRUE) $open_tema="1"; else $open_tema="0"; if ($goto==1) $goto="admin.php?id=$fid_new"; else $goto="admin.php?id=$fid&page=$page"; // БЛОК объединения тем [изменён в 2016г.] // I. в $temaplus.dat нужно удалить строку с этой темой $temaplus=replacer($_POST['temaplus']); // в эту тему присоединяем $temakuda=replacer($_POST['temakuda']); // в начало или конец темы if (strlen($temaplus)>1 and is_file("$datadir/$temaplus.dat")) { if ($temaplus==$id) exit("Ошибка. Не выбрана тема для присоединения, либо выбрана та же самая тема."); $id_new=substr($temaplus,3,4); //print"$rd - rd (выбранная тема)
$temaplus - temaplus (к какой теме присоединяем)
$temakuda - temakuda (в начало - 0, в конец - 1)
$fid - fid

"; $file=file("$datadir/$fid.dat"); $fp=fopen("$datadir/$fid.dat","a+"); flock ($fp,LOCK_EX); ftruncate ($fp,0);//УДАЛЯЕМ СОДЕРЖИМОЕ ФАЙЛА for ($i=0;$i"; if ("$rdt[2]$rdt[3]"!="$temaplus") fputs($fp,$file[$i]); else $starzag=$rdt[5];} fflush ($fp); flock ($fp,LOCK_UN); fclose($fp); // II. соединяем файлы вместе $record1=file_get_contents("$datadir/$rd.dat"); // Считываем содержимое $record2=file_get_contents("$datadir/$temaplus.dat"); // Считываем содержимое if ($temakuda==TRUE) $records="$record2$record1"; else $records="$record1$record2"; $records=str_replace("|$id_new|","|$id_old|",$records); $records=str_replace("|$starzag|","|$zag|",$records); // Меняем название темы во всём файле $fp=fopen("$datadir/$rd.dat","a+"); flock ($fp,LOCK_EX); ftruncate ($fp,0);//УДАЛЯЕМ СОДЕРЖИМОЕ fputs($fp,$records); fflush ($fp); flock ($fp,LOCK_UN); fclose($fp); unlink("$datadir/$temaplus.dat"); //удаляем файл // III. Если есть голосование, одно оставляем, второе удаляем. $g_name[1]="$datadir/$fid$id_old"."-ip.dat"; $g_name[2]="$datadir/$fid$id_old"."-vote.dat"; $g_name[3]="$datadir/$fid_new$id_new"."-ip.dat"; $g_name[4]="$datadir/$fid_new$id_new"."-vote.dat"; if (is_file($g_name[3]) and !is_file($g_name[1])) {rename($g_name[3],$g_name[1]); rename($g_name[4],$g_name[2]);} if (is_file($g_name[3])) unlink($g_name[3]); if (is_file($g_name[4])) unlink($g_name[4]); //удаляем файлы голосования //print"$g_name[1]
$g_name[2]
$g_name[3]
$g_name[4]
"; } // КОНЕЦ БЛОКа объединения тем //print"$rd- rd
$id=id
$id_old - id_old
$id_new - id_new
$fid - fid
$fid_new - fid_new
$zag - zag
$zag_old - zag_old
$open_tema - open_tema

";exit; if ($fid_new==$fid) { // ЕСЛИ ТЕМА ОСТАЁТСЯ В ТОЙЖЕ РУБРИКЕ $file=file("$datadir/$fid.dat"); $fp=fopen("$datadir/$fid.dat","a+"); flock ($fp,LOCK_EX); ftruncate ($fp,0);//УДАЛЯЕМ СОДЕРЖИМОЕ ФАЙЛА for ($i=0;$i0)) { $fl=file("$datadir/$fid.dat"); $kolvotem=count($fl); $kolvomsg="0"; for ($itf=0; $itf<$kolvotem; $itf++) { $forumdt=explode("|",$fl[$itf]); $idtemp="$forumdt[2]$forumdt[3]"; $tema="$forumdt[5]"; if ((!ctype_digit($idtemp)) or (strlen($idtemp)!=7)) print""; else {if (is_file("$datadir/$idtemp.dat")) {$msgfile=file("$datadir/$idtemp.dat"); $countmsg=count($msgfile); $kolvomsg=$kolvomsg+$countmsg;} } } // for if ($kolvotem=="0") {$dt[11]=""; $dt[12]=""; $dt[13]=""; $dt[14]="";} $mainlines[$i]="$dt[0]|$dt[1]|$dt[2]|$dt[3]|$dt[4]|$dt[5]|$kolvotem|$kolvomsg|$dt[8]|$dt[9]|$dt[10]|$dt[11]|$dt[12]|$dt[13]|$dt[14]|\r\n"; } else { $kolvotem="0"; $kolvomsg="0"; $mainlines[$i]="$dt[0]|$dt[1]|$dt[2]|$dt[3]|$dt[4]|$dt[5]|$kolvotem|$kolvomsg|$dt[8]|$dt[9]|$dt[10]|$dt[11]|$dt[12]|$dt[13]|$dt[14]|\r\n";} } else $mainlines[$i]="$dt[0]|$dt[1]|$dt[2]|$dt[3]|$dt[4]||0|0|0|0|0|||||\r\n"; } while($i < $countmf); $file=file("$datadir/wrforum.dat"); // сохраняем точные данные о кол-ве тем и сообщений в файл $fp=fopen("$datadir/wrforum.dat","w"); flock ($fp,LOCK_EX); for ($i=0;$i< sizeof($file);$i++) fputs($fp,$mainlines[$i]); flock ($fp,LOCK_UN); fclose($fp); } // ЕСЛИ У ТЕМЫ МЕНЯЕТСЯ РУБРИКА // 6. Если в news.dat есть эта тема, то удаляем её нафиг (удаляем тему из 10-КИ последних) $file=file("$datadir/news.dat"); $fp=fopen("$datadir/news.dat","w"); flock ($fp,LOCK_EX); for ($i=0; $i< sizeof($file); $i++) {$dt=explode("|",$file[$i]); if ($dt[2]==$fid and $dt[3]==$id_old) unset($file[$i]);} fputs($fp, implode("",$file)); flock ($fp,LOCK_UN); fclose($fp); Header("Location: $goto"); exit; } } // if $event==rdtema // ДОБАВЛЕНИЕ ТЕМЫ или ОТВЕТА - ШАГ 1 if(isset($_GET['event'])) { if (($_GET['event']=="add_tema") or ($_GET['event']=="add_msg")) { if ($_GET['event']=="add_tema") {$add_tema=TRUE; $add_msg=FALSE;} // Если добавляем ТЕМУ if ($_GET['event']=="add_msg") {$add_msg=TRUE; $add_tema=FALSE;} // Если добавляем СООБЩЕНИЕ // ПОЛУЧАЕМ ДАННЫЕ ИЗ ФОРМЫ if (isset($_POST['who'])) $who=$_POST['who']; else $who=""; if (isset($_POST['email'])) $email=$_POST['email']; else $email=""; if (isset($_POST['page'])) $page=$_POST['page']; else $page=""; if (isset($_POST['maxzd'])) $maxzd=$_POST['maxzd']; else $maxzd="0"; if ($maxzd==null) $maxzd="0"; if ((!ctype_digit($maxzd)) or (strlen($maxzd)>2)) exit("$back. Попытка взлома по звёздам или ошибка в файле статистики"); if (isset($_POST['name'])) $name=$_POST['name']; else $name=""; $name=trim($name); if (isset($_POST['msg'])) $msg=$_POST['msg']; else $msg=""; if (isset($_POST['zag'])) $zag=$_POST['zag']; else $zag=""; if (isset($_GET['id'])) {$fid=$_GET['id']; $id=$fid;} else {$fid=""; $id="";} if (strlen($fid)>3) $fid=substr($fid,0,3); if (strlen($id)==7) $id=substr($id,3,4); if (!ctype_digit($fid) or strlen($fid)!=3 or !is_file("$datadir/$fid.dat")) exit("$back. Попытка взлома через номер рубрики. Рубрика отсутствует. Номер должен содержать только 3 цифры!"); $ip=$_SERVER['REMOTE_ADDR']; $tektime=time(); $pageadd=""; $in=0; $maxzd=$_POST['maxzd']; if (!ctype_digit($maxzd) or strlen($maxzd)>2) exit("$back. Попытка взлома. Хакерам здесь не место."); // проходим по всем разделам и топикам - ищем запращиваемый. Если wrforum.dat - пуст, то подключаем резервную копию. $realbase=TRUE; if (is_file("$datadir/wrforum.dat")) $mainlines=file("$datadir/wrforum.dat"); if (!isset($mainlines)) $datasize=0; else $datasize=sizeof($mainlines); if ($datasize<=0) {if (is_file("$datadir/wrf-copy.dat")) {$realbase="0"; $mainlines=file("$datadir/wrf-copy.dat"); $datasize=sizeof($mainlines);}} if ($datasize<=0) exit("$back. Проблемы с Базой данных - проведите ремонт базы данных через блок ПЕРЕРАСЧЁТ!"); $realfid=FALSE; $fotodetali=""; $i=count($mainlines); $lines_tema=file("$datadir/$fid.dat"); $itogotem=count($lines_tema); $j=$itogotem; do {$i--; $dt=explode("|",$mainlines[$i]); if ($dt[2]==$fid) { $realfid=$i+1; $i=0; if ($dt[3]==TRUE) exit("$back. Данной ветки форума не существует (есть только раздел с таким именем!)"); // присваиваем $realfid - № п/п строки if ($itogotem>=$dt[8]) exit("$back. Превышено ограничение на кол-во допустимых тем в данной рубрике! Не более $dt[8] тем!"); } } while($i>0); if ($realfid==FALSE) exit("$back. Ошибка с номером рубрики. Рубрика отсутствует в базе!"); $realfid--; // проверка Логина/Пароля юзера. Может он хакер, тогда облом ему // Этап 1 if (isset($_POST['userpass'])) $userpass=replacer($_POST['userpass']); else $userpass=""; $realname=""; if (isset($_COOKIE['wrfcookies'])) { $wrfc=$_COOKIE['wrfcookies']; $wrfc=htmlspecialchars($wrfc,ENT_COMPAT,"windows-1251"); $wrfc=stripslashes($wrfc); $wrfc=explode("|", $wrfc); $wrfname=$wrfc[0]; $wrfpass=$wrfc[1]; } else {$who="0"; $wrfname=null; $wrfpass=null;} // ШАГ 2 $rn_user=FALSE; if ($who==TRUE) { $who=0; if ($wrfname!=null & $wrfpass!=null) { $lines=file("$datadir/user.php"); $i=count($lines); do {$i--; $rdt=explode("|", $lines[$i]); if (strlen($rdt[3])>1) { $realname=strtolower($rdt[2]); if (strtolower($wrfname)===$realname & $wrfpass===$rdt[3]) {$rn_user=$rdt[0]; $name=$wrfname; $who="1";} } } while($i > "1"); if ($rn_user==FALSE) {setcookie("wrfcookies","",time()); exit("Ошибка при работе с КУКИ! Вы не сможете оставить сообщение, попробуйте подать его как гость. Ваш логин и пароль не найдены в базе данных, попробуйте зайти на форум вновь. Если ошибка повторяется - обратитесь к администратору форума.");} }} $ok=FALSE; if ($j>0) { do {$j--; $tdt=explode("|",$lines_tema[$j]); // Если есть темы в разделе if ($add_msg==TRUE) { // Если добавляем СООБЩЕНИЕ if ($tdt[3]==$id) { $ok=TRUE; if ($tdt[11]==FALSE) exit("$back тема закрыта и добавление сообщений запрещено!"); } } // $add_msg==TRUE if ($add_tema==TRUE) { // ЕСЛИ добавляем ТЕМУ $ok=TRUE; // функция АНТИФЛУД: повторное добавление темы запрещено! if ($tdt[5]==$zag) exit("$back. Тема с заголовком \"$tdt[5]\" (ссылка на тему) уже создана на форуме! Спамить на форуме запрещено!"); } // $add_tema==TRUE } while($j>0); } // if $j>0 // БЛОК ГЕНЕРИРУЕТ СЛЕДУЮЩИЙ ПО ПОРЯДКУ НОМЕР ТЕМЫ, начиная просмотр с 1000 if ($add_tema==TRUE) { $id=1000; $id="$fid$id"; $allid=null; $records=file("$datadir/$fid.dat"); $imax=count($records); $i=$imax; if ($i > 0) { do {$i--; $rd=explode("|",$records[$i]); $allid[$i]="$dt[2]$dt[3]"; } while($i>0); do $id++; while(in_array($id,$allid) or is_file("$datadir/$id.dat")); } else $id=$fid."1000"; if (strlen($id)!=7) exit("$back. Номер темы должен быть числом. Критическая ошибка скрипта или попытка взлома"); $id=substr($id,3,4); // Нам нужен чистый ID из 4-х символов } // if $add_tema==TRUE $name=wordwrap($name,30,' ',1); // разрываем длинные строки $zag=wordwrap($zag,50,' ',1); if (strlen(ltrim($zag))<3) exit("$back ! Ошибка в вводе данных заголовка!"); $name=str_replace("|","I",$name); $who=str_replace("|","|",$who); $email=str_replace("|","|",$email); $zag=str_replace("|","|",$zag); $msg=str_replace("|","|",$msg); $vip_tema="0"; // VIP-тема. Если указать 1, то такая тема будет показываться вверху! $open_tema="1"; // Тема открыта для добавления сообщений? 1/0 $golos="0"; // Есть голосование в теме? 1/0 $rn="10000"; // Если добавляем ТЕМУ if ($add_tema==TRUE) {$rn_tema="10000"; $text_tema="$rn|$rn_tema|$fid|$id|$tektime|$zag|$who|$rn_user|$name|$email|$vip_tema|$open_tema|$ip||"; $text_tema=replacer($text_tema);} else { if (is_file("$datadir/$fid$id.dat")) {$linesn=file("$datadir/$fid$id.dat"); $in=count($linesn)-1;} $rn_tema=10000+($in+1)*10; } // Генерируем следующий по порядку RN с шагом в 10 единиц! $text_msg="$rn_tema|$golos|$fid|$id|$tektime|$zag|$who|$rn_user|$name|$email|$vip_tema|$open_tema|$ip|"; // добавление сообщения! $text_msg=replacer($text_msg); $exd=explode("|",$text_msg); $name=$exd[8]; $zag=$exd[5]; $msg=replacer($msg); if (!isset($name) || strlen($name) > $maxname || strlen($name) <1) exit("$back Ваше Имя пустое, или превышает $maxname символов!"); if (preg_match("/[^(\\w)|(\\x7F-\\xFF)|(\\-)]/",$name)) exit("$back Ваше имя содержит запрещённые символы. Разрешены русские и английские буквы, цифры, подчёркивание и тире."); if (strlen(ltrim($zag))<3 || strlen($zag) > $maxzag) exit("$back Слишком короткое название темы или название превышает $maxzag символов!"); if (strlen(ltrim($msg))<2 || strlen($msg) > $maxmsg) exit("$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)>30 and $email!="") exit("$back и введите корректный E-mail адрес!"); // Здесь в index.php идёт загрузка файла. В админке этого нет. $text_msg=$text_msg."|$msg||"; if(isset($_GET['topicrd'])) { // Выбрано редактирование СООБЩЕНИЯ $topicrd=replacer($_GET['topicrd']); // номер ячейки, которую необходимо заменить $oldmsg=replacer($_POST['oldmsg']); $oldmsg=str_replace("\r\n","
",$oldmsg); $oldmsg=str_replace("|","|",$oldmsg); $oldmsg=str_replace(":kovichka:", "'",$oldmsg); // РАЗшифровываем символ ' $msg=replacer($msg); $file=file("$datadir/$fid$id.dat"); $fs=count($file)-1; $i="-1"; $timetek=time(); $timefile=filemtime("$datadir/$fid$id.dat"); $timer=$timetek-$timefile; // узнаем сколько прошло времени (в секундах) $records=file_get_contents("$datadir/$fid$id.dat"); $records=str_replace("|$oldmsg|","|$msg|",$records); // Делаем замену |старое сообщение| на новое //print"$records"; $fp=fopen("$datadir/$fid$id.dat","a+"); flock ($fp,LOCK_EX); ftruncate ($fp,0);//УДАЛЯЕМ СОДЕРЖИМОЕ ФАЙЛА fputs($fp,$records); fflush ($fp); flock ($fp,LOCK_UN); fclose($fp); if ($timer<0) {$viptime=strtotime("+2 year"); touch("$datadir/$fid$id.dat",$viptime);} Header("Location: admin.php?id=$fid$id&page=$page"); exit; } print""; if ($add_msg==TRUE) { //при ОТВЕТе В ТЕМЕ $in=$in+2; $pageadd=""; $page=ceil($in/$msg_onpage); if ($page!=1) $pageadd="&page=$page"; // ЗАЩИТА ОТ ФЛУДА: проверяем, давно ли реактивировали тему $timetek=time(); $timefile=filemtime("$datadir/$fid$id.dat"); $timer=$timetek-$timefile; // сколько секунд назад? if ($timer<$antiflud and $timer>0) exit("$back тема была активна менее $timer секунд назад. Подождите чуть-чуть."); // ЕСЛИ введена команда АП!, то меняем дату создания файла и тема самая первая будет if (strtolower($msg)=="ап!") { touch("$datadir/$fid$id.dat"); print "
Спасибо, $name, тема реактивирована.

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

ДАЛЬШЕ >>>
"; exit;} } // $add_msg==TRUE $razdelname=""; if ($realbase=="1" and $maxzd<1) { // Если подключена рабочая база, а не копия $lines=file("$datadir/wrforum.dat"); $max=sizeof($lines)-1; $dt=explode("|", $lines[$realfid]); $dt[7]++; $main_id="$fid$id"; if ($add_tema==TRUE) $dt[6]++; $txtdat="$dt[0]|$dt[1]|$dt[2]|$dt[3]|$dt[4]|$dt[5]|$dt[6]|$dt[7]|$dt[8]|$dt[9]|$dt[10]|$main_id|$tektime|$name|$zag|"; $razdelname=$dt[4]; $fp=fopen("$datadir/wrforum.dat","a+"); // запись данных на главную страницу flock ($fp,LOCK_EX); ftruncate ($fp,0);//УДАЛЯЕМ СОДЕРЖИМОЕ ФАЙЛА for ($i=0;$i<=$max;$i++) {if ($i==$realfid) fputs($fp,"$txtdat\r\n"); else fputs($fp,$lines[$i]);} fflush ($fp); flock ($fp,LOCK_UN); fclose($fp); } // if ($realbase==TRUE) if ($maxzd<1) { // запись в отдельный файл нового сообщения $newmessfile="$datadir/news.dat"; if (is_file("$datadir/$fid.dat")) $nlines=count(file("$datadir/$fid.dat")); else $nlines=1; if (is_file("$datadir/$fid$id.dat")) $nlines2=count(file("$datadir/$fid$id.dat"))+1; else $nlines2=1; $newlines=file($newmessfile); $ni=count($newlines)-1; $flag=FALSE; $newlineexit=""; $ntext=$text_msg."$nlines|$nlines2|"; $ntext=str_replace(" ", "
", $ntext); // Блок проверяет, есть ли уже новое сообщение в этой теме. Если есть - отсеивает. На выходе - массив без этой строки. if($ni>=15) {unset($newlines[0]); $ni--; $newlines=array_values($newlines); $flag=TRUE;} // Если в файле более 15 сообщений, то старое (первое) удаляем! for ($i=0;$i<=$ni;$i++) { $ndt=explode("|",$newlines[$i]); if ("$fid$id"!="$ndt[2]$ndt[3]") $newlineexit.="$newlines[$i]"; else $flag=TRUE; } if ($flag==TRUE) {$newlineexit.=$ntext; $fp=fopen($newmessfile,"w");} else {$newlineexit=$ntext; $fp=fopen($newmessfile,"a+");} flock ($fp,LOCK_EX); fputs($fp,"$newlineexit\r\n"); fflush ($fp); flock ($fp,LOCK_UN); fclose($fp); } // if ($maxzd<1) // БЛОК добавляет +Х к сообщению, репе, кол-ву тем, созданных юзером if (isset($_COOKIE['wrfcookies']) and ($ok!=FALSE)) { $ufile="$datadir/userstat.dat"; $ulines=file("$ufile"); $ui=count($ulines)-1; $ulinenew=""; $fileadd=0; // Если юзер загружает файл - то ему ещё +Х в РЕПУ if (isset($_FILES['file']['name']) and $repaaddfile!=FALSE) {if (strlen($_FILES['file']['name'])>1) $fileadd=$repaaddfile;} // Записываем данные в файл REPA.DAT $repa=$fileadd; if ($add_tema==TRUE) {$repa=$repa+$repaaddtem; $pochemu="За добавление темы $zag"; } else {$repa=$repa+$repaaddmsg; $pochemu="За добавление сообщения в теме $zag";} $today=time(); $fp=fopen("$datadir/repa.dat","a+"); flock ($fp,LOCK_EX); fputs($fp,"$today|+$repa|$wrfname||$pochemu||||\r\n"); fflush ($fp); flock ($fp,LOCK_UN); fclose($fp); for ($i=0;$i<=$ui;$i++) { $udt=explode("|",$ulines[$i]); // Ищем юзера по имени в файле userstat.dat if ($udt[2]==$wrfname) { $udt[6]++; $udt[7]=$udt[7]+$fileadd; if ($add_tema==TRUE) {$udt[5]++; $udt[7]=$udt[7]+$repaaddtem;} else $udt[7]=$udt[7]+$repaaddmsg; $ulines[$i]="$udt[0]|$tektime|$udt[2]|$udt[3]|$udt[4]|$udt[5]|$udt[6]|$udt[7]|$udt[8]|$udt[9]|$ip|$udt[11]|\r\n";} $ulinenew.="$ulines[$i]";} $fp=fopen("$ufile","w"); // Пишем данные в файл flock ($fp,LOCK_EX); fputs($fp,"$ulinenew"); fflush ($fp); flock ($fp,LOCK_UN); fclose($fp);} // ЕСЛИ ЕСТЬ КУКА У ЮЗЕРА И ОН ЕСТЬ в user.php if ($add_tema==TRUE) { // Добавление ТЕМЫ - запись данных $fp=fopen("$datadir/$fid.dat","a+"); // Пишем В ТОПИК flock ($fp,LOCK_EX); fputs($fp,"$text_tema\r\n"); fflush ($fp); flock ($fp,LOCK_UN); fclose($fp); $fp=fopen("$datadir/$fid$id.dat","a+"); // Пишем В ТЕМУ flock ($fp,LOCK_EX); fputs($fp,"$text_msg\r\n"); fflush ($fp); flock ($fp,LOCK_UN); fclose($fp); print "
Спасибо, $name, за добавление темы!

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

ДАЛЬШЕ >>>
"; exit; } if ($add_msg==TRUE) { //ОТВЕТ В ТЕМЕ - запись данных $timetek=time(); $timefile=filemtime("$datadir/$fid$id.dat"); $timer=$timetek-$timefile; // узнаем сколько прошло времени (в секундах) $fp=fopen("$datadir/$fid$id.dat","a+"); flock ($fp,LOCK_EX); fputs($fp,"$text_msg\r\n"); fflush ($fp); flock ($fp,LOCK_UN); fclose($fp); //////////// ПЕРЕДАЛАТЬ! ВИП темы сейчас по другому работают!////////////////// if ($timer<0) {$viptime=strtotime("+2 year"); touch("$datadir/$id.dat",$viptime);} print "
Спасибо, $name, Ваш ответ успешно добавлен.

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

ДАЛЬШЕ >>>
"; exit; } } // Сделать копию БД if ($_GET['event']=="makecopy") { if (is_file("$datadir/wrforum.dat")) $lines=file("$datadir/wrforum.dat"); if (!isset($lines)) $datasize=0; else $datasize=sizeof($lines); if ($datasize<=0) exit("Проблемы с Базой данных - база повреждена. Размер=0!"); if (copy("$datadir/wrforum.dat", "$datadir/wrf-copy.dat")) exit("

Копия база данных создана.

$back

"); else exit("Ошибка создания копии БАЗЫ Данных. Попробуйте создать вручную файл wrf-copy.dat в папке $datadir и выставить ему права на ЗАПИСЬ - 666 или полные права 777 и повторите операцию создания копии!"); } // Восстановить из копии БД if ($_GET['event']=="restore") { if (is_file("$datadir/wrf-copy.dat")) $lines=file("$datadir/wrf-copy.dat"); if (!isset($lines)) $datasize=0; else $datasize=sizeof($lines); if ($datasize<=0) exit("Проблемы с копией базы данных - она повреждена. Восстановление невозможно!"); if (copy("$datadir/wrf-copy.dat", "$datadir/wrforum.dat")) exit("

БД восстановлена из копии.

$back

"); else exit("Ошибка восстановления из копии БАЗЫ Данных. Попробуйте вручную файлам wrf-copy.dat и wrforum.dat в папке $datadir выставить права на ЗАПИСЬ - 666 или полные права 777 и повторите операцию восстановления!"); } // КОНФИГУРИРОВАНИЕ форума, шаг 2: сохранение данных if ($_GET['event']=="config") { // обработка полей пароль админа/модератора if (strlen($_POST['newpassword'])<1 or strlen($_POST['newmoderpass'])<1) exit("$back разрешается длина пароля МИНИМУМ 1 символ!"); if ($_POST['newpassword']!="скрыт") {$pass=trim($_POST['newpassword']); $_POST['password']=md5("$pass+$skey");} if ($_POST['newmoderpass']!="скрыт") {$pass=trim($_POST['newmoderpass']); $_POST['moderpass']=md5("$pass+$skey");} // защита от дурака. Дожились, уже в админке защиту приходится ставить... $fd=stripslashes($_POST['forum_info']); $fd=str_replace("\\","/",$fd); $fd=str_replace("?>","? >",$fd); $fd=str_replace("\"","'",$fd); $forum_info=str_replace("\r\n","
",$fd); mt_srand(time()+(double)microtime()*1000000); $rand_key=mt_rand(1000,9999); // Генерируем случайное число для цифрозащиты $gmttime=($_POST['delta_gmt'] * 60 * 60); // Считаем смещение $newsmiles=$_POST['newsmiles']; $i=count($newsmiles); $smiles="array("; for($k=0; $k<$i; $k=$k+2) { $j=$k+1; $s1=replacer($newsmiles[$k]); $s2=replacer($newsmiles[$j]); $smiles.="\"$s1\", \"$s2\""; if ($k!=($i-2)) $smiles.=","; } $smiles.=");"; $_POST['forum_name']=replacer($_POST['forum_name']); $rektxt=stripslashes($_POST['reklamatext']); $rektxt=str_replace("\\","/",$rektxt); $rektxt=str_replace("?>","? >",$rektxt); $rektxt=str_replace("\"","'",$rektxt); $reklamatext=str_replace("\r\n","
",$rektxt); if (strlen($reklamatext)>1000) substr($reklamatext,1000); $repa=$_POST['repa']; $status=$_POST['status']; $userrepa="array("; $userstatus="array("; // Собираем статус и рупутацию в массивы for($k=0; $k<8; $k++) { $r=replacer($repa[$k]); $s=replacer($status[$k]); $userrepa.="\"$r\""; if ($k!=7) $userrepa.=","; $userstatus.="\"$s\""; if ($k!=7) $userstatus.=","; } $userrepa.=");"; $userstatus.=");"; if (!isset($_POST['forum_lock'])) $forum_lock="0"; else $forum_lock="1"; if (!isset($_POST['sendmail'])) $sendmail="0"; else $sendmail="1"; if (!isset($_POST['random_name'])) $random_name="0"; else $random_name="1"; if (!isset($_POST['admin_send'])) $admin_send="0"; else $admin_send="1"; if (!isset($_POST['antimat'])) $antimat="0"; else $antimat="1"; if (!isset($_POST['antispam2012'])) $antispam2012="0"; else $antispam2012="1"; if (!isset($_POST['antispam'])) $antispam="0"; else $antispam="1"; if (!isset($_POST['onlineb'])) $onlineb="0"; else $onlineb="1"; if (!isset($_POST['nosssilki'])) $nosssilki="0"; else $nosssilki="1"; if (!isset($_POST['reklama'])) $reklama="0"; else $reklama="1"; if (!isset($_POST['specblok1'])) $specblok1="0"; else $specblok1="1"; if (!isset($_POST['specblok2'])) $specblok2="0"; else $specblok2="1"; if (!isset($_POST['statistika'])) $statistika="0"; else $statistika="1"; if (!isset($_POST['g_add_tema'])) $g_add_tema="0"; else $g_add_tema="1"; if (!isset($_POST['g_add_msg'])) $g_add_msg="0"; else $g_add_msg="1"; if (!isset($_POST['activation'])) $activation="0"; else $activation="1"; if (!isset($_POST['liteurl'])) $liteurl="0"; else $liteurl="1"; if (!isset($_POST['quikchat'])) $quikchat="0"; else $quikchat="1"; if (!isset($_POST['showsmiles'])) $showsmiles="0"; else $showsmiles="1"; if (!isset($_POST['can_up_file'])) $can_up_file="0"; else $can_up_file="1"; if (!isset($_POST['antiflud'])) $antiflud="0"; else $antiflud="1"; if (!isset($_POST['ipblok'])) $ipblok="0"; else $ipblok="1"; if ($_POST['datadir']!=$datadir and !is_dir($_POST['datadir'])) rename("$datadir", $_POST['datadir']); // Если меняем имя директории, то переименовываем папку с текущей $configdata="
Вернитесь назад\"; // Удобная строка\r\n". "$"."smiles=".$smiles."// СМАЙЛИКИ (имя файла, символ для вставки, -//-)\r\n". "$"."delta_gmt=\"".$_POST['delta_gmt']."\"; // Учитываем кол-во часов со смещением относительно хостинга по формуле: ЧЧ * 3600\r\n". "$"."date=date(\"d.m.Y\", time()+$gmttime); // число.месяц.год\r\n". "$"."time=date(\"H:i:s\",time()+$gmttime); // часы:минуты:секунды\r\n". "$"."chatmaxmsg=\"".$_POST['chatmaxmsg']."\"; // Макс. символов в сообщении чата\r\n". "$"."chatrefresh=\"".$_POST['chatrefresh']."\"; // Частота обновления чата\r\n". "$"."chatmsg_onpage=\"".$_POST['chatmsg_onpage']."\"; // Количество видимых сообщений чата\r\n". "$"."chatinput=\"".$_POST['chatinput']."\"; // Длина строки ввода сообщения чата\r\n". "$"."chatframesize=\"".$_POST['chatframesize']."\"; // Длина фрейма чата\r\n". "$"."antiflud=\"".$antiflud."\"; // Задействовать АНТИФЛУД\r\n". "$"."fludtime=\"".$_POST['fludtime']."\"; // Антифлуд-время в секундах\r\n". "$"."ipblok=\"".$ipblok."\"; // Запретить голосовать более раза с одного IP 0/1\r\n". "$"."userstatus=".$userstatus."// Звания при накоплении баллов репутации\r\n". "$"."userrepa=".$userrepa."// Баллы репутации необходимые для смены статуса\r\n". "$"."quikchat=\"".$quikchat."\";// Показывать БЛОК 'Мини-чат на главной'\r\n". "$"."reklama=\"".$reklama."\"; // Показывать блок рекламы и объявлений 0/1\r\n". "$"."reklamatitle=\"".$_POST['reklamatitle']."\"; // Заголовок блока рекламы и объявлений\r\n". "$"."reklamatext=\"".$reklamatext."\"; // Текст блока\r\n?>"; $file=file("data/config.php"); $fp=fopen("data/config.php","a+"); flock ($fp,LOCK_EX); ftruncate ($fp,0);//УДАЛЯЕМ СОДЕРЖИМОЕ ФАЙЛА fputs($fp,$configdata); fflush ($fp); flock ($fp,LOCK_UN); fclose($fp); Header("Location: admin.php?event=configure"); exit;} } // конец if isset($event) // шапка для всех страниц форума if (isset($_COOKIE['wrfcookies'])) { $wrfc=$_COOKIE['wrfcookies']; $wrfc=explode("|", $wrfc); $wrfname=$wrfc[0];$wrfpass=$wrfc[1];$wrftime1=$wrfc[2];$wrftime2=$wrfc[3]; if (time()>($wrftime1+50)) { $tektime=time(); $wrfcookies="$wrfc[0]|$wrfc[1]|$tektime|$wrftime1|"; setcookie("wrfcookies", $wrfcookies, time()+1728000); $wrfc=$_COOKIE['wrfcookies']; $wrfc=explode("|", $wrfc); $wrfname=$wrfc[0];$wrfpass=$wrfc[1];$wrftime1=$wrfc[2];$wrftime2=$wrfc[3]; }} // БЛОК подключает копию главного файла при повреждении if (is_file("$datadir/wrforum.dat")) $mainlines=file("$datadir/wrforum.dat"); $imax=count($mainlines); $i=$imax; if (!isset($mainlines)) $datasize=0; else $datasize=sizeof($mainlines); if ($datasize<=0) {if (is_file("$datadir/wrf-copy.dat")) {$mainlines=file("$datadir/wrf-copy.dat"); $datasize=sizeof($mainlines);}} if ($datasize<=0) exit("
Файл РУБРИК отсутствует! Зайдите в админку и создайте рубрики!"); $error=FALSE; $frname=null; $frtname=""; $rfid=""; // ДЛЯ ссылки типа razdel= if (isset($_GET['razdel'])) { do {$i--; $dt=explode("|", $mainlines[$i]); if ($dt[0]==$_GET['razdel']) {$rfid=$i; $frname="$dt[2] »";} } while($i >0); $i=$imax;} if (isset($_GET['id'])) { // Блок выводит в статусной строке: ТЕМА » РАЗДЕЛ » ФОРУМ $id=$_GET['id']; if (strlen($id)==3 and !is_file("$datadir/$id.dat")) $error="ый Вами раздел"; if (strlen($id)==7 and !is_file("$datadir/$id.dat")) $error="ая Вами тема"; if (!ctype_digit($id)) $error="ая Вами тема или раздел"; if(strlen($id)>3) {$fid=substr($id,0,3); $id=substr($id,3,4);} else $fid=$id; // проходим по всем разделам и топикам - ищем запрашиваемый do {$i--; $dt=explode("|", $mainlines[$i]); if ($dt[2]==$fid) { $frname="$dt[4] »"; if (isset($dt[11])) { if($dt[11]>0) $maxtem=$dt[11]; else $maxtem="999";}} } while($i >0); // Блок считывает название темы для отображения в шапке форума if (strlen($id)>3 and is_file("$datadir/$fid.dat")) { $lines=file("$datadir/$fid.dat"); $imax=count($lines); $i=$imax; do {$i--; $dt=explode("|",$lines[$i]); if($dt[2]==$fid) $frtname="$dt[5] »"; } while ($i>0); } if ($error==TRUE) { // ЗАПРЕЩАЕМ ИНДЕКСАЦИЮ страниц с цитированием / УДАЛЁННЫЕ РАЗДЕЛЫ / ТЕМЫ! $topurl="$forum_skin/top.html"; ob_start(); include $topurl; $topurl=ob_get_contents(); ob_end_clean(); $topurl=str_replace("",'',$topurl); print"$topurl"; if (strlen($error)>1) exit("

Извините, но запрашиваем$error отсутствует.
Рекомендую перейти на главную страницу форума по этой ссылке,
и найти интересующую Вас тему.
"); } // здесь проверяем СУЩЕСТВУЕТ ЛИ СТРАНИЦА, на которую пришёл юзер if (strlen($id)==3) { $lines=file("$datadir/$id.dat"); $imax=count($lines); if (isset($_GET['page'])) $page=$_GET['page']; else $page=1; $maxikpage=ceil($imax/$msg_onpage); } } // if (isset($_GET['id'])) // печатаем ВЕРХУШКУ форума если есть файл ?> Админка » <?print"$frtname $frname $forum_name";?> "> "> '; // определяем тип: форум или заголовок if ($dt[3]==TRUE) print ""; else { $newtema=""; $page=1; $msgsize=""; $pageadd=""; if (is_file("$datadir/$dt[11].dat")) { $msgsize=sizeof(file("$datadir/$dt[11].dat")); // считаем кол-во страниц в файле if (strlen($dt[13])>20) {$dt[13]=substr($dt[13],0,20); $dt[13].="..";} if (strlen($dt[14])>28) {$dt[14]=substr($dt[14],0,28); $dt[14].="..";} if ($msgsize>$msg_onpage) $page=ceil($msgsize/$msg_onpage); else $page=1; if ($page!=1) $pageadd="&page=$page"; if (strlen($dt[12])<5) $dt[12]=time(); if (date("d.m.Y",$dt[12])==$date) $dt[12]="сегодня в ".date("H:m",$dt[12]); else $dt[12]=date("d.m.y - H:m",$dt[12]); $newtema="тема: $dt[14]
автор: $dt[13]
дата: $dt[12]
"; } // is_file...$dt[11] if ($dt[9]>=1) {$maxzvezd="*Доступна участникам, имеющим $dt[9] звезд"; if ($dt[9]==1) $maxzvezd.="у"; if ($dt[9]>=2 and $dt[9]<=4) $maxzvezd.="ы"; $maxzvezd.=" минимум";} else $maxzvezd=null; print " \r\r\n"; $itogotem=$itogotem+$dt[6]; $itogomsg=$itogomsg+$dt[7]; } } while($a1 < $u); echo'

Вы вошли как

Панель администрирования



Копия БД: Сделать! Восстановить? Участники IP-Блокировка Статитика входа Пересчитать Просмотр БД Настройки"; print"ПоискВыход"; // читаем файл с именами пользователей в память чтобы показать последнего $userlines=file("$datadir/user.php"); $ui=count($userlines)-1; $tdt=explode("|",$userlines[$ui]); if (is_file("$datadir/wrf-copy.dat")) { if (count(file("$datadir/wrf-copy.dat"))<1) $a2="НО файл копии ПУСТ! Срочно пересоздайте!
(смотрите права доступа, если эо сообщение повторяется)"; else $a2=""; $a1=round((time()-filemtime("$datadir/wrf-copy.dat"))/86400); if ($a1<1) $a1="сегодня, это есть гуд!"; else $a1.=" дней назад."; $add="
Копия была создана ".$a1." $a2"; if ($a1>90) $add.="Да уж, больше 3-х месяцев ниодной копии не делали. Испытываете судьбу? Делайте БЕГОМ!"; if ($a1>10) $add.="Вы что! СРОЧНО делайте копию! А вдруг сбой? Как будете данные восстанавливать?!!"; if ($a1>5) $add.="Пора делать копию. Берегите свои нервы. Чтобы быть спокойным при сбое ;-)"; $add.="
";} else $add=""; print"
$add
Сегодня: $date г. - $time
"; // выводим ГЛАВНУЮ СТРАНИЦУ ФОРУМА if (!isset($_GET['event'])) { if (!isset($_GET['id'])) { echo' '; // Выводим msg_onpage сообщений на текущей странице $addform="
Форумы Тем/Макс. Ответов Обновление
Добавление Раздела / Форума
Тип добавляемого пункта Раздел    Форум
Заголовок
Описание
"; if (!is_file("$datadir/wrforum.dat")) exit("

Восстановите БД из копии. Файл wrforum.dat несуществует или добавьте форум/раздел.

$addform"); $lines=file("$datadir/wrforum.dat"); $datasize=sizeof($lines); if ($datasize==0) exit("

Файл wrforum.dat пуст - добавьте форум или раздел.

$addform"); $i=count($lines); $n="0"; $a1="-1"; $u=$i-1; $fid="0"; $itogotem="0"; $itogomsg="0"; do {$a1++; $dt=explode("|",$lines[$a1]); $fid=$dt[2]; echo'
'; if ($ktotut==1) { // только админ может управлять разделами print"
.P. .X.
"; } echo'
$dt[4]
 
$dt[4] $maxzvezd
$dt[5]
$dt[6] / $dt[8] $dt[7] $newtema

'; // Выбрано редактирование ФОРУМА if (isset($_GET['frd'])) { if ($_GET['frd']!="") { $frd=$_GET['frd']; $lines=file("$datadir/wrforum.dat"); $dt=explode("|",$lines[$frd]); if ($dt[8]>0) $addmax=$dt[8]; else $addmax="999"; if ($dt[9]<=0) $dt[9]="0"; $dt[5]=str_replace("
","\r\n",$dt[5]); print "
"; else {print " Форум";} print"
Редактирование Раздела / Форума
Тип редактируемого пункта "; if ($dt[3]==TRUE) print "Раздел
Заголовок
Заголовок
Описание
Максимальное кол-во тем в форуме
Заблокировать по звёздам Если ввести число от 1 до 9, то ТОЛЬКО участники с указанным кол-вом звёзд могут обсуждать эту ветку форума.

"; } } // Конец редактирования ФОРУМА else { if ($ktotut==1) print "$addform"; } if ($statistika==TRUE) { if ($g_add_tema==TRUE) $c1="разрешено"; else $c1="запрещено"; if ($g_add_msg==TRUE) $c2="разрешено"; else $c2="запрещено"; $codename=urlencode($tdt[2]); print"
Статистика
Сообщений: $itogomsg
Тем: $itogotem
Всего зарегистрировано участников: $ui
Последним зарегистрировался: $tdt[2]
Гостям $c1 создавать темы и $c2 отвечать в темах
"; // СТАТИСТИКА -= Последние сообщения с форума =- if (is_file("$datadir/news.dat")) { $newmessfile="$datadir/news.dat"; $lines=file($newmessfile); $i=count($lines); //if ($i>10) $i=10; (РАСКОМЕНТИРУЙ - ВОТ ГДЕ СИЛА!!! ;-)) if ($i>=1) { print"
'; // Инклюдим БЫСТРЫЙ ЧАТ if ($quikchat==TRUE) print""; echo'
Последние сообщения .X. .X.
"; $mmax=count($mainlines); $a1=$i-1;$u="-1"; // выводим данные по возрастанию или убыванию do {$dt=explode("|", $lines[$a1]); $a1--; if (isset($dt[1])) { // Если строчка потерялась в скрипте (пустая строка) - то просто её НЕ выводим $msg=htmlspecialchars($dt[14],ENT_COMPAT,"windows-1251"); $msg=str_replace('[b]'," ",$msg); $msg=str_replace('[/b]'," ",$msg); $msg=str_replace('[RB]'," ",$msg); $msg=str_replace('[/RB]'," ",$msg); $msg=str_replace('[Code]'," ",$msg); $msg=str_replace('[/Code]'," ",$msg); $msg=str_replace('[Quote]'," ",$msg); $msg=str_replace('[/Quote]'," ",$msg); $msg=str_replace('[img]'," картинка: ",$msg); $msg=str_replace('[/img]'," ",$msg); $msg=str_replace("
","\r\n", $msg); $msg=str_replace("'","`",$msg); $msg=str_replace('&lt;br&gt;'," \r\r\n", $msg); $msg=str_replace('<br>'," \r\r\n", $msg); $k=$mmax; $mainr=""; // Ищем название рубрики, как находим - присваимваем значение и выходим из цикла! do {$k--; $mdt=explode("|",$mainlines[$k]); if ($mdt[2]==$dt[2]) {$mainr="$mdt[4]"; $k=0;} } while($k>0); if (date("d.m.Y",$dt[4])==$date) $dt[4]="сегодня в ".date("H:i",$dt[4]); else $dt[4]=date("d.m.y - H:i",$dt[4]); if ($dt[17]>$msg_onpage) $page=ceil($dt[17]/$msg_onpage); else $page=1; // Считаем страницу if ($page!=1) $pageadd="&page=$page"; else $pageadd=""; if ($dt[6]==TRUE) {$codename=urlencode($dt[8]); $name="$dt[8]";} else $name="гость $dt[8]"; print"
.X. $dt[4]: $mainr » $dt[5] - $name.
"; } // если строчка потерялась $a11=$u; $u11=$a1; } while($a11 < $u11); echo'
'; } } // Конец блока последних сообщений } } // конец главной страницы // Общая переменная! if (isset($_GET['id'])) { if (strlen($_GET['id'])==3) { $fid=replacer($_GET['id']); $id=replacer($_GET['id']); } else $id=replacer($_GET['id']); if (strlen($id)==3) { // выводим страницу С ТЕМАМИ выбранной РУБРИКИ $maxzd=null; // Уточняем статус по кол-ву ЗВЁЗД в теме $imax=count($mainlines); do {$imax--; $ddt=explode("|", $mainlines[$imax]); if ($ddt[0]==$fid) $maxzd=$ddt[12]; } while($imax>"0"); if (!ctype_digit($maxzd)) $maxzd=0; print "
   $forum_name » $frname
"; $addbutton="
X/P Тема Cообщений Автор Обновления
"; // определяем есть ли информация в файле с данными if (is_file("$datadir/$fid.dat")) { $msglines=file("$datadir/$fid.dat"); if (count($msglines)>0) { if (count($msglines)>$maxtem-1) $addbutton="
 
\r\r\n"; } //if is_file } while($lm < $fm); // формируем переменную $pageinfo - со СПИСКОМ СТРАНИЦ $pageinfo=""; $addpage=""; $maxpage=ceil(($maxi+1)/$msg_onpage); 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 "
Количество допустимых тем в рубрике исчерпано."; // Выводим msg_onpage сообщений на текущей странице $lines=file("$datadir/$fid.dat"); $i=count($lines); $maxi=$i; $n="0"; ////////////////// Механизм сортировки некорректный //////////////// ///////////////// Переделать его так: считываем последнюю строку каждого ФАЙЛА С ТЕМОЙ! // Берём там дату создания сообщения, их сортируем и тогда скрипт будет работать корректно // Замарочка с массивами - их 3 штуки. Тоже передалать! // ПЕРЕДАЛАТЬ ЭТОТ БЛОК!!!!!!!!!!!!!!!!! // БЛОК СОРТИРОВКИ: последние ответы ВВЕРХУ (по времени создания файла с темой)! if ($i>1) { // Если в рубрике хотябы ДВЕ темы do {$i--; $dt=explode("|",$lines[$i]); $filename="$dt[2]$dt[3].dat"; if (is_file("$datadir/$filename")) $ftime=filemtime("$datadir/$filename"); else $ftime=""; $newlines[$i]="$dt[10]|$ftime|$dt[2]$dt[3]|$i|"; } while($i > 0); sort($newlines); //print"
"; print_r($newlines); exit;
// $newlines - массив с данными: ДАТА | ИМЯ_ФАЙЛА_С_ТЕМОЙ | № п/п |
// $lines - массив со всеми темами выбранной рубрики
$i=$maxi;
do {$i--; $dtn=explode("|", $newlines[$i]);
  $numtp="$dtn[3]"; $goodlines[$i]="$lines[$numtp]";
} while($i > 0);
$lines=null; $lines=$goodlines; // Записываем отсортированные по дате создания темы в переменную, которую будем использовать дальше
} // if ($i>1)
// КОНЕЦ блока сортировки
// ПЕРЕДАЛАТЬ ЭТОТ БЛОК!!!!!!!!!!!!!!!!!

// Исключаем ошибку вызова несуществующей страницы
if (!isset($_GET['page'])) $page=1; else { $page=$_GET['page']; if (!ctype_digit($page)) $page=1; if ($page<1) $page=1; }

// Показываем msg_onpage ТЕМ
$fm=$maxi-$tem_onpage*($page-1); if ($fm<"0") $fm=$tem_onpage;
$lm=$fm-$tem_onpage; if ($lm<"0") $lm="0";

$timetek=time();

do {$fm--; $dt=explode("|", $lines[$fm]);

 $num=$fm+2; $numid=$fm+1;

$filename="$dt[2]$dt[3]"; if (is_file("$datadir/$filename.dat")) { // если файл с темой существует - то показать тему
$msgsize=sizeof(file("$datadir/$filename.dat"));

// --------- Выделяем новые сообщения
$linetmp=file("$datadir/$filename.dat"); if (sizeof($linetmp)!=0) {
$pos=$msgsize-1; $dtt=explode("|", $linetmp[$pos]);
$foldicon="folder.gif";
// Если последнее сообщение в форуме произошло раньше посещения - значит раздел форума - новый
if (isset($wrfname)) {if (isset($dtt[4])) {if ($dtt[4]>$wrftime2) $foldicon="foldernew.gif";}}
if ($dt[11]==FALSE) { if ($msgsize<"20") $foldicon="close.gif"; else $foldicon="closed.gif"; } } else $foldicon="foldernew.gif";
// --------- Конец

print "
.P..X.
"; if ($dt[10]==TRUE) echo'VIP '; print"$dt[5]"; if ($msgsize>$msg_onpage) { // ВЫВОДИМ СПИСОК ДОСТУПНЫХ СТРАНИЦ ТЕМЫ $maxpaget=ceil($msgsize/$msg_onpage); $addpage=""; echo'     
Страницы: '; if ($maxpaget<=5) $f1=$maxpaget; else $f1=5; for($i=1; $i<=$f1; $i++) {if ($i!=1) $addpage="&page=$i"; print"$i  ";} if ($maxpaget>5) print "... $maxpaget"; } print"
$msgsize"; $codename=urlencode($dt[8]); if ($dt[6]==TRUE) print "$dt[8]
$user_name"; else print"$dt[8]
$guest_name"; // защита if (strlen...) только если файл есть и имеет верный формат - выводим if ($msgsize>=2) {$linesdat=file("$datadir/$filename.dat"); $dtdat=explode("|", $linesdat[$msgsize-1]); if (strlen($linesdat[$msgsize-1])>10) {$dt[0]=$dtdat[0]; $dt[1]=$dtdat[1]; $dt[2]=$dtdat[2]; $dt[5]=$dtdat[5]; $dt[6]=$dtdat[6];}} if (date("d.m.Y",$dtt[4])==$date) $dtt[4]="сегодня в ".date("H:i:s",$dtt[4]); else $dtt[4]=date("d.m.y - H:i",$dtt[4]); print "
Автор: $dtt[8]
дата/время: $dtt[4]
$pageinfo"; if ($maxi>0) { // БЫСТРЫЙ ПЕРЕХОД к теме // 1. Необходимо создать новый массив со списком тем + кол-вом сообщений в теме! $ii=$maxi; $cn=0; $i=0; do {$dt=explode("|", $lines[$i]); //10001|10001|102|1002|1348390988|дизайн форума|0||dash||0|1||| if (is_file("$datadir/$dt[2]$dt[3].dat")) $counter=sizeof(file("$datadir/$dt[2]$dt[3].dat")); $records[$i]="$dt[5]|$dt[2]$dt[3]|$dt[4]|$counter|"; //print" $records[$i]
"; $i++;} while($i<$ii); sort($records); //print"
"; print_r($records); exit;
// 2. Сортируем массив по имени темы

echo '
Навигация
Быстрый переход по темам  

'; } // if($maxi>0) }} // ------------ Выбрано редактирование ТЕМЫ if (isset($_GET['rd'])) { if ($_GET['rd'] !="") { $rd=replacer($_GET['rd']); $i="-1"; // Бежим по массиву тем и ищем ту тему, которую вызвали на редактирование do {$i++; $dt=explode("|",$lines[$i]); if ("$dt[2]$dt[3]"===$rd) $i=$maxi; // ЕСЛИ нашли тему, значит завершаем цикл и дальше работаем со строкой } while($i < $maxi); if ($dt[10]==FALSE) {$vt1="checked"; $vt2="";} else {$vt2="checked"; $vt1="";} if ($dt[11]==FALSE) {$ct2="checked"; $ct1="";} else {$ct1="checked"; $ct2="";} print "
Редактирование Темы
Название темы открыта   закрыта
Добавить к этой теме другую?"; if ($maxi>0) { // Выводим темы отосртированные по имени. Массив $records (см. выше) echo ' в конец темы   В начало темы '; } // if($maxi>0) print"
Переместить в другой раздел и перейти куда? в текущую рубрику    туда куда переносим тему
Статус темы: обычная / VIP ? обычная тема   VIP-тема (всегда отображается первой на первой странице)
"; } } else { echo '
Добавление темы
'; if (!isset($wrfname)) echo'Имя и E-mail
'; print "Заголовок темы
Сообщение
"; if (isset($wrfname)) {print "";} else {echo '
';} print "



"; } // -------------- } if (strlen($id)==7) { // выводим СООБЩЕНИЕ в текущей теме // определяем есть ли информация в файле с данными if (!is_file("$datadir/$id.dat")) exit("

$back. Извините, но такой темы на форуме не существует.
Скорее всего её удалил администратор."); $lines=file("$datadir/$id.dat"); $mitogo=count($lines); $i=$mitogo; $maxi=$i-1; if ($mitogo>0) { $tblstyle="row1"; $printvote=null; // Считываем СТАТИСТИКУ ВСЕХ УЧАСТНИКОВ if (is_file("$datadir/userstat.dat")) {$ufile="$datadir/userstat.dat"; $ulines=file("$ufile"); $ui=count($ulines)-1;} // Ищем тему в XХХ.dat - проверяем не закрыта ли тема? и сразу же ищем есть ли в топике // Заодно формируем № строки предыдущей и следующей темы $ok=FALSE; $closed=FALSE; $lasttema=FALSE; $nexttema=FALSE; if (is_file("$datadir/$fid.dat")) { $msglines=file("$datadir/$fid.dat"); $mg=count($msglines); $mgmax=$mg-1; do {$mg--; $mt=explode("|",$msglines[$mg]); if ("$mt[2]$mt[3]"==$id) { $ok=1; if ($mt[11]==FALSE) $closed=TRUE; if ($mg>=1) $lasttema=$mg; // № строки предыдущей темы if ($mg<$mgmax) $nexttema=$mg+1; // № строки следующей темы $mg=0; } } while($mg >"0");} $maxzd=null; // Уточняем статус по кол-ву ЗВЁЗД в теме $imax=count($mainlines); do {$imax--; $ddt=explode("|", $mainlines[$imax]); if ($ddt[2]==$fid) $maxzd=$ddt[9]; } while($imax>"0"); if (!ctype_digit($maxzd)) $maxzd=0; // Исключаем ошибку вызова несуществующей страницы if (!isset($_GET['page'])) $page=1; else {$page=$_GET['page']; if (!ctype_digit($page)) $page=1; if ($page<1) $page=1;} // формируем переменную $pageinfo - со СПИСКОМ СТРАНИЦ $pageinfo=""; $addpage=""; $maxpage=ceil(($maxi+1)/$msg_onpage); 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"; $fm=$msg_onpage*($page-1); if ($fm>$maxi) $fm=$maxi-$msg_onpage; $lm=$fm+$msg_onpage; if ($lm>$maxi) $lm=$maxi+1; do {$dt=explode("|", $lines[$fm]); $fm++; $num=$maxi-$fm+2; $status=""; unset($youwr); if (strlen($lines[$fm-1])>5) { // Если строчка потерялась в скрипте (пустая строка) - то просто её НЕ выводим if (isset($_GET['quotemsg'])) { $quottime=date("d.m.y в H:i",$dt[4]); $quotemsg=replacer($_GET['quotemsg']); if(ctype_digit($quotemsg) and $quotemsg==$fm) $qm="[Quote][b]$dt[8] $quottime пишет:[/b]\r\n".$dt[14]."[/Quote]";} else $qm=""; $msg=str_replace("[b]","", $dt[14]); $msg=str_replace("[/b]","",$msg); $msg=str_replace("[RB]","",$msg); $msg=str_replace("[/RB]","",$msg); $msg=str_replace("<br>","
",$msg); // ЗАКОМЕНТИРОВАТЬ при ЧИСТОЙ установке скрипта или в 2017 году! $msg=str_replace("[br]","
",$msg); // c 08.2015 г. $msg=str_replace("[Quote]","
    Цитата:
    ",$msg); $msg=str_replace("[/Quote]","
",$msg); $msg=str_replace("[Code]","
    Код:
    ",$msg); $msg=str_replace("[/Code]","
",$msg); $msg=str_replace("<br>","
",$msg); if ($showsmiles==TRUE) {$i=count($smiles)-1; // заменяем текстовые смайлики на графические если разрешено for($k=0; $k<$i; $k=$k+2) {$j=$k+1; $msg=str_replace("$smiles[$j]","",$msg);}} // Если разрешена публикация УРЛов if ($liteurl==TRUE) {$msg=' '.$msg; $msg=preg_replace ("/([^\[img\]])((https|http|ftp)+(s)?:(\/\/)([\w]+(.[\w]+))([\w\-\.,@?^=%&:;\/~\+#]*[\w\-\@?^=%&:;\/~\+#])?)/i", "\\1\\2", $msg); $msg=ltrim($msg);} // После замены АДРЕСА URL преобразуем код [img] $msg=preg_replace('#\[img\](.+?)(jpg|gif|jpeg|png|bmp)\[/img\]#','',$msg); // Вставляем видео с ЮТУБ $msg=preg_replace("/(\[Youtube\])(.+?)(\[\/Youtube\])/is","
",$msg); // считываем в память данные по пользователю if (is_file("$datadir/user.php")) $userlines=file("$datadir/user.php"); $usercount=count($userlines); if ($dt[6]==TRUE) { $iu=$usercount; $predup="0"; do {$iu--; $du=explode("|", $userlines[$iu]); if ($du[0]==$dt[7]) { $reiting=$du[4]; $youavatar=$du[15]; $email=$du[5]; $icq=$du[10]; $site=$du[11]; $userpn=$iu; if (isset($_COOKIE['wrfcookies']) or $podpis_pokaz==TRUE) { $youwr=' '.$du[14]; if (strlen($youwr)>10) { $youwr=preg_replace('#\[img\](.+?)(jpg|gif|jpeg|png|bmp)\[/img\]#','',$youwr); $image=stristr($youwr, ''); $image=substr($image,0,$pos); if (@GetImageSize($image)==TRUE) { $size=GetImageSize($image); // $width=$size[0]; $height=$size[1]; if ($size[0]>350 or $size[1]>20) { do {$size[0]=round($size[0]/2); $size[1]=round($size[1]/2);} while ($size[0]>350 or $size[1]>20); } $youwr=str_replace('border="0"',"border=\"0\" width=\"$size[0]\" height=\"$size[1]\"",$youwr);} if (stristr($youwr,"$4 ",$youwr); $youwr=ltrim($youwr);} else $youwr=$du[14]; } //if (strlen($youwr)>10) } // if (isset($_COOK } while($iu > "0"); } if ($tblstyle=="row1") $tblstyle="row2"; else $tblstyle="row1"; if (!isset($m1)) { $frname=str_replace(' »','',$frname); $frtname=str_replace(' »','',$frtname); //вырезаем лишние символы print "
$forum_name » $frname » $dt[5]   .P. .X.
"; echo''; $m1="1"; } print""; } // если строчка потерялась } while($fm < $lm); // Предыдущая и следующая тема - 2012 г. if ($lasttema!=FALSE) {$lasttema--; $ldt=explode("|",$msglines[$lasttema]); $lasttema="";} else $lasttema=""; if ($nexttema!=FALSE) {$ndt=explode("|",$msglines[$nexttema]); $nexttema="
Автор Сообщение

"; // Проверяем: это гость? if (!isset($youwr)) {if (strlen($dt[9])>5) print "$dt[8] "; else print"$dt[8] "; $kuda=$fm-1; print" ".chr(149)."


$guest_name";} else { $codename=urlencode($dt[8]); print "$dt[8] ".chr(149)."

"; if (strlen($status)>2 & $dt[6]==TRUE & isset($youwr)) print "$status"; else print"$user_name"; if (isset($reiting)) {if ($reiting>0) {echo'
'; if (is_file("$forum_skin/star.gif")) {for ($ri=0;$ri<$reiting;$ri++) {print"";} } }} if (isset($youavatar)) {if (is_file("avatars/$youavatar")) $avpr="$youavatar"; else $avpr="noavatar.gif"; print "

";} } // isset($youwr) if (isset($youwr) and is_file("$datadir/userstat.dat")) { if (isset($ulines[$userpn])) { if (strlen($ulines[$userpn])>5) { $ddu=explode("|",$ulines[$userpn]); print"

Статистика:
Тем создано: $ddu[5]
Сообщений: $ddu[6]
Репутация: $ddu[7] ±
Предупреждения: $ddu[8]
"; }}} print "

IP: $dt[12] В БАН
$msg"; // БЛОК ГОЛОСОВАНИЯ - если есть то выводим !!! if ($fm==1 and is_file("$datadir/$id-vote.dat")) { // БЛОК ПЕЧАТАЕМ ОДИН РАЗ $vlines=file("$datadir/$id-vote.dat"); if (sizeof($vlines)>0) {$vitogo=count($vlines); $vi=1; $vdt=explode("|",$vlines[0]); print"
Голосование:  $vdt[0] 
"; do {$vdt=explode("|",$vlines[$vi]); print"       $vdt[0]

"; $vi++; } while($vi<$vitogo); print "


Результаты
.X.
"; }} // КОНЕЦ БЛОКА ГОЛОСОВАНИЯ echo'
'; // Если ПРИКРЕПЛЁН ФАЙЛ к сообщению - то показываем значёк и ссылку на него или картинку if (strlen($dt[13])>2) { if (is_file("$filedir/$dt[13]")) { $fsize=filesize("$filedir/$dt[13]"); $fsize=round($fsize/1024); print"
Прикреплён файл:удалить файл

"; if (preg_match("/.(jpg|jpeg|bmp|gif|png)+$/is",$dt[13])) { // Проверяем "габариты" фото и если одна из сторон больше допустимых - то меняем атрибуты $size=getimagesize("$filedir/$dt[13]"); do {$size[0]=$size[0]/2; $size[1]=$size[1]/2; } while ($size[0]>1600 or $size[1]>1200); print"
Посмотреть полноразмерное изображение"; } else print" $dt[13] ($fsize Кб.)
"; }} // печатаем подпись участника if (isset($youwr)) {if (strlen($youwr)>3) {print "
--------------------------------------------------
$youwr";}} if (date("d.m.Y",$dt[4])==$date) $dt[4]="сегодня в ".date("H:i",$dt[4]); else $dt[4]=date("d.m.y - H:i:s",$dt[4]); print"
.P..X.
Сообщение # $fm.
Отправлено: $dt[4]
$ldt[5] :Предыдущая темаСледующая тема: $ndt[5] ►";} else $nexttema=""; print"
$lasttema$nexttema
$pageinfo
"; print""; // Выбрана метка .P. - редактирование сообщения if (isset($_GET['topicrd'])) { // выводим сообщение в форму $topicrd=$_GET['topicrd']-1; $lines=file("$datadir/$id.dat"); $dt=explode("|", $lines[$topicrd]); $dt[4]=str_replace("
", "\r\n", $dt[14]); $oldmsg=str_replace("'", ":kovichka:",$dt[14]); // шифруем символ ' print "
Сообщение
Имя   E-mail   Участник? "; if ($dt[6]==TRUE) echo'ДА'; else echo'НЕТ'; } else { print "
Сообщение
Имя "; if (!isset($wrfname)) echo'и E-mail
'; echo'
'; if (!isset($wrfname)) echo' '; else print "$wrfname"; } echo'
Сообщение

Для вставки имени, кликните на точку рядом с ним.

Смайлики:
'; if ($showsmiles==TRUE) {$i=count($smiles)-1; for($k=0; $k<$i; $k=$k+2) {$j=$k+1; print" ";} } print"RB Ещё смайлы
"; if (isset($_GET['topicrd'])) { $dt[14]=str_replace("<br>","[br]",$dt[14]); // ЗАКОМЕНТИРОВАТЬ при ЧИСТОЙ установке скрипта или в 2017 году! $dt[14]=str_replace("[br]","\r\n",$dt[14]); // c 08.2015 г. print "
         
   
"; } else { echo'
    '; $newvote="
"; $i=0; $j=1; do { // Считываем имеющееся голосование if (isset($vlines[$i])) $vdt=explode("|",$vlines[$i]); else {$vdt[0]=""; $vdt[1]="0";} if ($i==0) {$newvote.=""; } else {$newvote.="";} $i++; $j++; if ($j>2) $j=1; } while($i<11); $newvote.="
Cоздание/редактирование голосования
Название голосования:
$i ответ:

* оставьте поля пустыми, если хотите создать голосование с меньшим кол-вом ответов
"; if ($page=="1") echo $newvote; }} } // else if event !="" } } // if (isset($_GET['id'])) - если есть $id if (isset($_GET['event'])) { // КОНФИГУРИРОВАНИЕ форума - выбор настроек if ($_GET['event']=="configure") { if (!isset($specblok1)) $specblok1="0";// временно так как ввёл новые переменные в data/config.php if (!isset($specblok2)) $specblok2="0";// --//-- if (!isset($nosssilki)) $nosssilki="0";// --//-- if ($ktotut!=1) {exit("$back! Модераторам запрещено изменять настройки форума! Если нужно сменить пароль - обращайтесь к админу!");} $skin=null; $path='.'; // Считываем имена папок со скинами в переменную if ($handle=opendir($path)) { while (($file=readdir($handle)) !== false) if (is_dir($file)) { $stroka=stristr($file, "images"); if (strlen($stroka)>"6") {$skin.="$stroka - str $file
"; $tskin=str_replace("images-", "Скин - ", $file); if ($forum_skin==$file) $marker="selected"; else $marker=""; $skin.="";} } closedir($handle); } else echo'Ошибка!'; $ok='checked="checked"'; // Новая система [изменён в 2016г.] $sp1=""; if ($forum_lock==TRUE) $sp1=$ok; $rn1=""; if ($random_name==TRUE) $rn1=$ok; $sa1=""; if ($admin_send==TRUE) $sa1=$ok; $s1=""; if ($sendmail==TRUE) $s1=$ok; $am1=""; if ($antimat==TRUE) $am1=$ok; $as1=""; if ($antispam==TRUE) $as1=$ok; $asn1="";if ($antispam2012==TRUE) $asn1=$ok; $ct1=""; if ($g_add_tema==TRUE) $ct1=$ok; $cm1=""; if ($g_add_msg==TRUE) $cm1=$ok; $u1=""; if ($activation==TRUE) $u1=$ok; $lu1=""; if ($liteurl==TRUE) $lu1=$ok; $ns1=""; if ($nosssilki==TRUE) $ns1=$ok; $st1=""; if ($statistika==TRUE) $st1=$ok; $cs1=""; if ($can_up_file==TRUE) $cs1=$ok; $af1=""; if ($antiflud==TRUE) $af1=$ok; $ip1=""; if ($ipblok==TRUE) $ip1=$ok; $rk1=""; if ($reklama==TRUE) $rk1=$ok; $sm1=""; if ($showsmiles==TRUE) $sm1=$ok; $sb1=""; if ($specblok1==TRUE) $sb1=$ok; $bs1=""; if ($specblok2==TRUE) $bs1=$ok; $ob1=""; if ($onlineb==TRUE) $ob1=$ok; $qt1=""; if ($quikchat==TRUE) $qt1=$ok; print "
Конфигурирование
"; for($k=0; $k<8; $k++) print""; print"
Параметр Значение
Общие настройки
Название форума
Описание.
Использовать HTML-теги не рекомендуется!
Е-майл администратора
Логин и пароль администратора (данные входа в админ.панель со 100% набором прав)*Логин: Пароль:
Логин и пароль модератора (частичный набор прав)*Логин: Пароль:
Сколько давать очков репутации при добавлении:сообщения: темы: файла:
Макс. длина имени / заголовка темы / сообщения    .:.       .:.   
Тем / Cообщений / Участников на страницу   .:.     .:.  
Защиты от взлома и накрутки
Длина кода: (от 1 до 9) цифр
вопрос: , ответ:
Информационные и рекламные блоки
Заголовок БЛОКА 'Реклама и/или объявление'
Текст БЛОКА 'Реклама и/или объявление' показывается в верхней части всех страниц с темами.

можно использовать теги, но двойные кавычки нельзя (будут заменены на одинарные). Не более 1000 символов.
Настройки мини-чата
Максимум символов в сообщении
Частота обновления чата, секунд
Количество видимых сообщений
Длина строки ввода сообщения, пунктов
Длина фрейма чата, пикселей
Настройки голосования
защитное время: секунд
Настройки статусов (званий)
Как называть участников НЕ зареганых / зареганых  /  
Репутация от  статус
Прочие настройки
Скин форума
Папка с данными форума    По умолчанию - ./data
Максимальный размер аватара в байтах
Папка для загрузки файлов    По умолчанию - ./load
Максимальный размер файла в байтах
Смещение GMT относительно времени хостинга (GMT + XX часов)
Смайлы
"; if (isset($smiles)) {$i=count($smiles); for($k=0; $k<$i; $k=$k+2) { $j=$k+1; if ($k!=($i-1) and is_file("smile/$smiles[$k].gif")) print" "; } } echo'


* Если хотите изменить пароль - сотрите слово "скрыт" и введите новый пароль.
Рекомендую использовать только английские буквы и/или цифры. У некоторых хостеров есть проблемы
с регинальнальными настройками и пароль, набранный на другом языке может сохранится некорректно.
'; } // ПРОСМОТР ВСЕХ УЧАСТНИКОВ форума if ($_GET['event']=="userwho") { $t1="row1"; $t2="row2"; $error=0; $userlines=file("$datadir/user.php"); $ui=count($userlines)-1; $maxi=$ui; $first=0; $last=$ui+1; $statlines=file("$datadir/userstat.dat"); $si=count($statlines)-1; if ($si=="0") exit("

НИОДНОГО участника не зарегистрировано!

"); print"
Действия над участниками: ★ Пересчитать статистикуАвтоматическая рассылка "; echo'★ Удалить НЕ АКТИВИРОВАННЫХ
'; $bada="
В файле статистики имеются ошибки! ПЕРЕСЧИТАЙТЕ статистику участников!!!

"; if ($si!=$ui) print"$bada"; if (isset($_GET['page'])) $page=$_GET['page']; else $page="1"; if (!ctype_digit($page)) $page=1; // защита if ($page=="0") $page="1"; else $page=abs($page); $maxpage=ceil(($ui+1)/$uq); if ($page>$maxpage) $page=$maxpage; // формируем переменную $pageinfo - со СПИСКОМ СТРАНИЦ $pageinfo=""; $addpage=""; $maxpage=ceil(($maxi+1)/$uq); 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.='
'; $i=1+$uq*($page-1); if ($i>$ui) $i=$ui-$uq; $lm=$i+$uq; if ($lm>$ui) $lm=$ui+1; print"$pageinfo"; echo'
'; $delblok="
Имя Пол Дата рег-ии Емайл / Сменить пароль Тем Сообщ. Репутация Штрафы Статус / Изменить Звёзд
"; do {$tdt=explode("|",$userlines[$i]); $i++; $npp=$i-1; if (isset($statlines[$i-1])) {$sdt=explode("|",$statlines[$i-1]);} else {$sdt[0]=""; $sdt[1]="-"; $sdt[2]="-"; $sdt[3]="-"; $sdt[4]="-";} // Проверяем, если файл статистики повреждён - пишем сообщение о необходимости восстановить его if ($sdt[0]!=$tdt[0]) {$error++; $sdt[1]="-"; $sdt[2]="-"; $sdt[3]="-"; $sdt[4]="-";} if ($tdt[6]==TRUE) $tdt[6]="М"; else $tdt[6]="Ж"; if ($tdt[16]==FALSE) $tdt[16]=$user_name; $tdt[1]=date("d.m.y - H:i",$tdt[1]); $delblok.=""; if ($tdt[16]==FALSE) { print"";} $t3=$t2; $t2=$t1; $t1=$t3; } while ($i<$lm); print"
.X.
$npp $tdt[2][Активировать]. Учётная запись не активирована с $tdt[1]. (емайл: $tdt[5] ключ: $tdt[16])"; } else { print"$tdt[6]$tdt[1]$tdt[5] $sdt[5] $sdt[6]
  $sdt[8] 
$delblok

 
 
"; print "$pageinfo
Всего зарегистрировано участников - $ui

    Пересортировать участников по:
      (сортировать лучше когда с форумом никто из участников не работает)

    "; if ($error>0) print"$bada"; echo'* Репутация - "Авторитетность" пользователя. 0 - 9999 ед. Автоматически увеличивается при добавлении сообщения/темы;

    ШТРАФЫ (система штрафов ещё настраивается. Будет доступна в следующей версии):
    0 - юзер может всё;
    1 - юзеру антифлуд увеличиваем до 60 секунд;
    2 - юзер не имеет права менять репу другим;
    +3 РАБОТАЕТ - юзеру запрещаем создавать темы на 1 месяц;
    +4 РАБОТАЕТ - блокируем доступ к ответу в темах на 1 месяц - только просмотр;
    5 - БАН на 1 месяц!
'; } } if (isset($_GET['event'])) { if ($_GET['event']=="blockip") { // - БЛОКИРОВКА по IP $itogo=0; if (is_file("$datadir/ipblock.dat")) { $lines=file("$datadir/ipblock.dat"); $i=count($lines)-1; $itogo=$i; if ($i>0) { echo'

Блокировка по IP-адресу

'; //FROM_TIME|TO_TIME|IP|LOCK|MSG|REZERVED| do {$dt=explode("|", $lines[$i]); $dt[0]=date("d.m.Y - H:i",$dt[0]); $dt[1]=date("d.m.Y - H:i",$dt[1]); if ($dt[3]==FALSE) $dt[3]="Запись"; else $dt[3]="Чтение и запись"; print""; $i--; } while($i>0); } else echo'

Заблокированные IP-адреса отсутствуют


'; } else echo'

Заблокированные IP-адреса отсутствуют


'; print"
.X. Дата блокировкиДата разблокировки IPТип блокировкиФормулировка
.X.
$dt[0]$dt[1]$dt[2]$dt[3]$dt[4]

Добавь IP НЕдруга!   Формулировка: на месяц.

*вводите IP аккуратно, не ставьте лишних ноликов и всяких пробелов.

Всего заБАНено пользователей - $itogo
Очистить файл блокировки
* Модуль в процессе написания. Сейчас работает только блокировка на запись до указанной даты!"; exit;}} if (isset($_GET['event'])) { if ($_GET['event']=="lastenter") { // - СТАТИСТИКА ВХОДА В АДМИНПАНЕЛЬ if (is_file("$datadir/adminlog.dat")) { $lines=file("$datadir/adminlog.dat"); $i=count($lines)-1; $itogo=$i; if ($i>=0) { echo'

Статистика входа в админпанель

'; //time|password|name|scribe|rezerved| do { $lines[$i]=replacer($lines[$i]); $dt=explode("|",$lines[$i]); $dt[0]=date("d.m.Y г. - H:i:s",$dt[0]); if ($dt[1]==TRUE) $dt[1]="верный"; else $dt[1]="ошибочный"; if ($dt[3]==TRUE) $dt[3]="Сработал блок авторассылки"; else $dt[3]="нет"; $verno="(ошибочный)"; if ($dt[2]==$adminname) $verno=" (администратор, верный)"; if ($dt[2]==$modername) $verno=" (модератор, верный)"; print""; $i--; } while($i>0); } else echo'

Статистика входа в админпанель отсутствует


'; } else echo'

Статистика входа в админпанель отсутствует


'; exit("
Дата и время входа Логин входа верен / ошибочен ? Пароль верен / ошибочен ? Система рассылки?
$dt[0]$dt[2] $verno$dt[1]$dt[3] *

Очистить статистику

* Модуль в процессе написания. Планируется при создании рассылок фиксировать в этот модуль количество отправленных писем при каждой рассылке. Этот функционал будут реализован позже!");}} if (isset($_GET['event'])) { if ($_GET['event']=="profile") { // РЕДАКТИРОВАНИЕ ПРОФИЛЯ юзера // функция используется для отображения аватаров function get_dir($path='./', $mask='*.php', $mode=GLOB_NOSORT) { if ( version_compare( phpversion(), '4.3.0', '>=' ) ) {if ( chdir($path) ) {$temp=glob($mask,$mode); return $temp;}} return false;} if (!isset($_GET['pname'])) exit("Попытка взлома."); $pname=urldecode($_GET['pname']); // РАСКОДИРУЕМ имя пользователя, пришедшее из GET-запроса. $lines=file("$datadir/user.php"); $i=count($lines); $use="0"; $userpn="0"; do {$i--; $rdt=explode("|",$lines[$i]); if (isset($rdt[1])) { // Если нет потерянных строк в скрипте (пустая строка) if ($rdt[16]==FALSE) $rdt[16]="ожидание активации"; if ($pname===$rdt[2]) { $userpn=$i; $jfile="$datadir/userstat.dat"; $jlines=file("$jfile"); $uj=count($jlines)-1; $msjitogo=0; for ($j=0;$j<=$uj;$j++) {$udt=explode("|",$jlines[$j]); $msjitogo=$msjitogo+$udt[6]; if ($udt[2]==$rdt[2]) {$msguser=$udt[6]; $temaded=$udt[5]; $repa=$udt[7];}} $msgaktiv=round(10000*$msguser/$msjitogo)/100; if($rdt[6]==TRUE) $rdt[6]="Мужчина"; else $rdt[6]="Женщина"; $aktiv=$rdt[1]; $tekdt=time(); $aktiv=round(($tekdt-$aktiv)/86400); if ($aktiv<=0) $aktiv=1; $aktiv=round(100*$msguser/$aktiv)/100; $rdt[1]=date("d.m.y - H:i",$rdt[1]); if (strlen($rdt[13])<2) $rdt[13]=$user_name; print "

Регистрационные данные ПОЛЬЗОВАТЕЛЯ $pname
Поля отмеченные * обязательны к заполнению, если не указано обратное
Имя участника:$rdt[2]
Репутация:
$repa [Оценить ±]
Дата регистрации:$rdt[1]
Пол:
$rdt[6]
Отправить личное сообщение на e-mail:
Написать персональное сообщение (сюда на форум):
Активность:Тем создано: $temaded, всего сообщений: $msguser [$msgaktiv% от общего числа / $aktiv сообщений в сутки]
Статус:$rdt[13] (НУЖНО ИСПРАВИТЬ!)
Сменить пароль: *(если хотите сменить, то введите новый пароль, иначе оставьте как есть!)
Адрес e-mail: *
Введите существующий электронный адрес! Форум защищён от роботов-спамеров.
День варенья:
Введите день рождения в формате: ДД.ММ.ГГГГГ, если не секрет.
Номер в ICQ:
Введите номер ICQ, если он у Вас есть.
Домашняя страничка:
Откуда:
Введите место жительства (Страна, Область, Город).
Интересы:
Вы можете написать о ваших интересах
Подпись:
Введите Вашу подпись, не используйте HTML
Аватар:
"; if (!is_file("avatars/$rdt[15]")) print""; else print""; print "
"; $use="1"; $i=1; } } // if } while($i > "1"); if ($use!="1") { // в БД такого ЮЗЕРА НЕТ echo'
Пользователь НЕ ЗАРЕГИСТРИРОВАН
Уважаемый администратор!

Извините, но участник с таким - логином на форуме не зарегистрирован.

Скорее всего, он был уже удалён или Вы перешли по ошибочной ссылке..

Посмотреть других участников можно здесь.

'; } } } // if (isset($_GET['event'])) { if (isset($_GET['event'])) { if ($_GET['event']=="seebasa") { print"
Просмотреть содержимое файла:
'; if (isset($_POST['openfile'])) { $openfile=$_POST['openfile']; if (!stristr($openfile, ".dat")) exit("Разрешён просмотр только содержимого базы скрипта (всех файлов с раширением dat!"); $data=File("$datadir/$openfile"); echo "

Содержимое файла \"$datadir/$openfile\"

* В первой строке указаны номера по порядку. Если Вам нужно считать в скрипте представленные данные, то здесь Вы можете быстро узнать их порядковый номер! "; $dat_arr=explode("|",$data[0]); for ($p=0;$p
$p"; echo "
"; for ($i=0;$i"; for ($f=0;$f
$data_array[$f]  "; echo ""; } echo "
"; } // if isset $_GET['openfile'] }} // МАССОВАЯ рассылка информации УЧАСТНИКам форума if (isset($_GET['event'])) { if ($_GET['event']=="massmail") { if (isset($_GET['user'])) $useremail=$_GET['user']; else $useremail=""; if (isset($_GET['autoscribe'])) $autoscribe=$_GET['autoscribe']; else $autoscribe=""; if (($autoscribe=="1") and ($useremail=="")) exit("

Вернитесь назад! Вам необходимо отредактировать текст, выбрать 1-го пользователи и нажать кнопку 'Сохранить и отправить рассылку'!"); print"


Введите параметры текста, отправляемого пользователю
  Имя отправителя:* и E-mail:*
Получатель:   НИК:* и E-mail:*"; echo'
  Сообщение:*
     '; if ($autoscribe=="1") { print"       
"; } else print"
"; echo'


* Используйте макроподстановку:
  • %name - имя участника форума;
  • %forum_name - название форума;
  • %forum_url - URL-адрес форума;
  • %forum_urllogin - URL-адрес страницы входа;
  • '; }} // МАССОВАЯ рассылка ?>
    Powered by WR-Forum Professional © 2.1