",'>',$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"); //число + ключ из 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 $name1!=$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]; //$qq=md5("$pass+$skey"); exit("$qq"); // РАЗБЛОКИРУЙТЕ для получения 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(); // присваиваются куки АДМИНИСТРАТОРУ 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 '


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


Powered by WR-Forum Professional © 1.9
"; exit;} } // АВТОРИЗАЦИЯ ПРОЙДЕНА! $gbc=$_COOKIE['wrforumm']; $gbc=explode("|", $gbc); $gbname=$gbc[0];$gbpass=$gbc[1];$gbtime=$gbc[2]; if ($gbname==$adminname) $ktotut="1"; else $ktotut="2"; // Кто вошёл: админ или модер? // РАССЫЛКА сообщений участникам форума if(isset($_GET['event'])) { if ($_GET['event']=="rassilochka") { $name=replacer($_POST['name']); $email=replacer($_POST['email']); $userdata=replacer($_POST['userdata']); if (strlen($userdata)<5) exit("Вы не выбрали участника форума, которому отправялем сообщение!"); $dt=explode("|", $userdata); $username=$dt[1]; $useremail=$dt[2]; $msg=$_POST['msg']; // Для Выбора схемы - раскоментируйте её и закоментируйте текущую символами // $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=" "; $host=$_SERVER["HTTP_HOST"]; $self=$_SERVER["PHP_SELF"]; $furl="http://$host$self"; $furl=str_replace("admin.php", "", $furl); // Настройки для отправки писем $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("%fname", "$fname",$msg); $msg=str_replace("%furllogin", "".$furl."tools.php?event=login",$msg); $msg=str_replace("%furl", "$furl",$msg); // Собираем всю информацию в теле письма $allmsg="$shapka
Сообщение c сайта \"$furl\"

Имя

$name

E-mail

$email

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

$date г. в $time

Сообщение

$msg
"; $printmsg="$allmsg

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

"; $allmsg.="


* Это сообщение отправлено с форума."; // Отправляем письмо майлеру на съедение ;-) mail("$useremail", "Сообщение с сайта: $fname", $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/usersdat.php"); $ui=count($lines); $i=$ui; do {$i--; $rdt=explode("|",$lines[$i]); $rdt[3]=strtolower($rdt[3]); if ($rdt[3]===$email) {$oldpass=$rdt[1]; $fnomer=$i; $name=$rdt[0];} } 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/usersdat.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="\r\n"; $file=file("$datadir/usersdat.php"); $maxi=count($file)-1; $i=0; $fp=fopen("$datadir/usersdat.php","w"); // удаляем строки с не активированными записями участников flock ($fp,LOCK_EX); do { $i++; $dt=explode("|",$file[$i]); if (strlen($dt[13])=="6" and ctype_digit($dt[13])) $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?event=userwho"); exit; } // Добавление IP-юзера в БАН if (isset($_GET['badip'])) { if (isset($_POST['ip'])) {$ip=$_POST['ip']; $badtext=$_POST['text'];} if (isset($_GET['ip_get'])) {$ip=$_GET['ip_get']; $badtext="За добавление нежелательных сообщений на форум! ЗА СПАМ!!!";} if (strlen($ip)<8) exit("Введите IP по формату X.X.X.X, где Х - число от 1 до 255! Сейчас запрос пуст или IP НЕ указан!"); $text="$ip|$badtext|"; $text=stripslashes($text); $text=htmlspecialchars($text); $text=str_replace("\r\n", "
", $text); $fp=fopen("$datadir/bad_ip.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/bad_ip.dat"); $dt=explode("|",$file[$xd]); $fp=fopen("$datadir/bad_ip.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); $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/usersdat.php"); $ui=count($lines); $i=$ui; do {$i--; $rdt=explode("|",$lines[$i]); $rdt[3]=strtolower($rdt[3]); if ($rdt[3]===$email and $rdt[13]===$key) {$name=$rdt[0]; $pass=$rdt[1]; $fnomer=$i;} if ($rdt[3]===$email and $rdt[13]==="") $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]||"; $fp=fopen("$datadir/usersdat.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['event'])) { if ($_GET['event'] =="revolushion") { $lines=file("$datadir/mainforum.dat"); $countmf=count($lines)-1; $i="-1";$u=$countmf-1;$k="0"; do {$i++; $dt=explode("|", $lines[$i]); if (!isset($dt[12])) {$dt[12]=""; $dt[11]="";} if ($dt[1]!="razdel") { $fid=$dt[0]; if ((is_file("$datadir/topic$fid.dat")) && (sizeof("$datadir/topic$fid.dat")>0)) { $fl=file("$datadir/topic$fid.dat"); $kolvotem=count($fl); $kolvomsg="0"; for ($itf=0; $itf<$kolvotem; $itf++) { $forumdt=explode("|",$fl[$itf]); $id=$forumdt[7]; $tema=$forumdt[3]; 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[8]=""; $lines[$i]="$dt[0]|$dt[1]|$dt[2]|$dt[3]|$kolvotem|$kolvomsg|$dt[6]|$dt[7]|$dt[8]|$dt[9]|$dt[10]|$dt[11]|$dt[12]|\r\n"; } else {$kolvotem="0"; $kolvomsg="0"; $lines[$i]="$dt[0]|$dt[1]|$dt[2]|$dt[3]|$kolvotem|$kolvomsg|$dt[6]|$dt[7]|$dt[8]||$dt[10]|$dt[11]|$dt[12]|\r\n";} } else $lines[$i]="$dt[0]|$dt[1]|$dt[2]|\r\n"; } while($i < $countmf); // сохраняем обновлённые данные о кол-ве тем и сообщений в файле $file=file("$datadir/mainforum.dat"); $fp=fopen("$datadir/mainforum.dat","w"); flock ($fp,LOCK_EX); for ($i=0;$i< sizeof($file);$i++) fputs($fp,$lines[$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/usersdat.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/usersdat.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/usersdat.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/usersdat.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[1]) and isset($sdt[2]) and isset($sdt[3]) and isset($sdt[4])) {$lines[$i]="$slines[$i]";} else {$lines[$i]="$udt[0]|0|0|0|0|||||\r\n";}} // если имя=имя - значит данные верны // Цикл в файле статистики - поиск строку текущего юзера if ($ok!="1") { for ($j=1;$j<$si;$j++) { $sdt=explode("|", $slines[$j]); if ($udt[0]==$sdt[0]) {$ok=1; $lines[$i]=$slines[$j]; }// если имя=имя - значит данные верны } if ($ok!="1") $lines[$i]="$udt[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,"ИМЯ_ЮЗЕРА|Тем|Сообщений|Репутация|Предупреждения Х/5|Когда последний раз меняли рейтинг в UNIX формате|||\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; } // Блок изменения СТАТУСА участника 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); $status=stripslashes($status); $status=str_replace("|"," ",$status); $status=str_replace("\r\n","
",$status); $lines=file("$datadir/usersdat.php"); $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]|$dt[9]|$dt[10]|$dt[11]|$dt[12]|$status|"; $fp=fopen("$datadir/usersdat.php","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); $reiting=stripslashes($reiting); $reiting=str_replace("|"," ",$reiting); $reiting=str_replace("\r\n","
",$reiting); $lines=file("$datadir/usersdat.php"); $i=count($lines); $dt=explode("|", $lines[$newreiting]); $txtdat="$dt[0]|$dt[1]|$reiting|$dt[3]|$dt[4]|$dt[5]|$dt[6]|$dt[7]|$dt[8]|$dt[9]|$dt[10]|$dt[11]|$dt[12]|$dt[13]|"; $fp=fopen("$datadir/usersdat.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); $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]|$repa|$dt[4]|$dt[5]|$dt[6]|$dt[7]|||"; $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); $text=stripslashes($text); $text=str_replace("|"," ",$text); $submit=str_replace("\r\n","
",$text); if (!ctype_digit($status)) $status=0; $status=$status+$submit; // корректируем статус (+1 или -1) // 0 <= СТАТУС <= 5 (БОЛЬШЕ ЛИБО РАВЕН НУЛЮ, НО МЕНЬШЕ ЛИБО РАВЕН ПЯТИ) if($status<0 or $status>5) exit("$back статус пользователя БОЛЬШЕ ЛИБО РАВЕН НУЛЮ, НО МЕНЬШЕ ЛИБО РАВЕН ПЯТИ!"); $lines=file("$datadir/userstat.dat"); if (!isset($lines[$usernum])) exit("ошибка! Нет такого пользователя в файле статистики!"); // если нет такой строка в файле статистики $dt=explode("|", $lines[$usernum]); // В версии 1.8.2 ещё было 5 полей в строке файла userstat.dat. // Защищаемся от ошибки - вводим пустые поля if (!isset($dt[6])) $dt[6]=""; if (!isset($dt[7])) $dt[7]=""; $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]|$status|$dt[5]|$dt[6]|$dt[7]|||"; $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); @chmod("$datadir/$id-vote.dat", 0644); // создаём файл для записи IPшников голосовавших $fp=fopen("$datadir/$id-ip.dat","w"); fflush ($fp); flock ($fp,LOCK_UN); fclose($fp); @chmod("$datadir/$id-ip.dat", 0644); 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/mainforum.dat"); $imax=sizeof($file); if (($move2>=$imax) or ($move2<"0")) exit(" НИЗЯ туда двигать!"); $data1=$file[$move1]; $data2=$file[$move2]; $fp=fopen("$datadir/mainforum.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'])) { $id=replacer($_GET['fxd']); if ($id=="" or strlen($id)>3) exit("Ошибка, выбирите рубрику для удаления, либо ошибка скрипта!"); // считываем все файлы в папке data попорядку, удалем те, которые начинаются на $id, // (файлы с темами, голосованием -vote, IP-шниками голосования -ip, topic$id - в темами) if ($handle=opendir($datadir)) { while (($file = readdir($handle)) !== false) if (!is_dir($file)) { $tema=substr($file,0,3); if($tema==$id) unlink ("$datadir/$file"); if($file=="topic$id.dat") unlink ("$datadir/topic$id.dat"); } closedir($handle); } else echo'Ошибка!'; // удаляем строку, соответствующую теме в файле со всеми темами $file=file("$datadir/mainforum.dat"); $fp=fopen("$datadir/mainforum.dat","w"); flock ($fp,LOCK_EX); for ($i=0;$i< sizeof($file);$i++) {$dt=explode("|",$file[$i]); if ($dt[0]==$id) 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[1]==$id) unset($file[$i]);} fputs($fp, implode("",$file)); flock ($fp,LOCK_UN); fclose($fp); Header("Location: admin.php"); exit; } // БЛОК ПЕРЕНУМЕРАЦИИ ТЕМЫ +-- if (isset($_GET['rename'])) { if ($_GET['rename'] !="") { $fid=$_GET['id']; $id_old=$_GET['rename']; $page=$_GET['page']; // ID темы хранится в самой теме, в рубрике, в 10-ке последних, на главной в последней теме // везде нужно исправить!!! везде! // 1. Считываем рубрикатор, генерируем новый ID темы // БЛОК ГЕНЕРИРУЕТ СЛЕДУЮЩИЙ ПО ПОРЯДКУ НОМЕР ТЕМЫ, начиная просмотр с 1000 // считываем весь файл с темами в память $id=1000; $id="$fid$id"; $allid=null; $records=file("$datadir/topic$fid.dat"); $imax=count($records); $i=$imax; if ($i > 0) { do {$i--; $rd=explode("|",$records[$i]); $allid[$i]=$rd[7]; } while($i>0); //natcasesort($allid); // сортируем по возрастанию do $id++; while(in_array($id,$allid) or is_file("$datadir/$id.dat")); } else $id=$fid."1000"; // Считываем содержимое РУБРИКИ и делаем замену |ID старый| на новый по всему файлу $rec=file_get_contents("$datadir/topic$fid.dat"); $rec=str_replace("|$id_old|","|$id|",$rec); // Делаем замену |ID старый| на новый по всему файлу $fp=fopen("$datadir/topic$fid.dat","w+"); flock ($fp,LOCK_EX); ftruncate ($fp,0);//УДАЛЯЕМ СОДЕРЖИМОЕ ФАЙЛА fputs($fp,"$rec"); fflush ($fp); flock ($fp,LOCK_UN); fclose($fp); rename("$datadir/$id_old.dat", "$datadir/$id.dat"); // Переименовываем файл $rec=file_get_contents("$datadir/$id.dat"); // Считываем содержимое $rec=str_replace("|$id_old|","|$id|",$rec); // Делаем замену |ID старый| на новый по всему файлу $fp=fopen("$datadir/$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/mainforum.dat"); // Считываем содержимое $rec=str_replace("|$id_old|","|$id|",$rec); // Заменяем |ID старый| на новый по всему файлу $fp=fopen("$datadir/mainforum.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("|$id_old|","|$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; } } // Блок удаления выбранной ТЕМЫ if (isset($_GET['xd'])) { if ($_GET['xd'] !="") { if (isset($_GET['page'])) $page=$_GET['page']; else $page="0"; $xd=$_GET['xd']; $id=$_GET['id']; $fid=substr($id,0,3); $file=file("$datadir/topic$fid.dat"); $minmsg=1; $delf=null; if (isset($file[$xd])) { $dt=explode("|", $file[$xd]); $delf = str_replace("\r\n", "", $dt[7]); $mlines=file("$datadir/$delf.dat"); $minmsg=count($mlines); unlink ("$datadir/$delf.dat");} // удаляем файл с темой if (is_file("$datadir/$delf-vote.dat")) unlink("$datadir/$delf-vote.dat"); // удаляем файл с ГОЛОСОВАНИЕМ if (is_file("$datadir/$delf-ip.dat")) unlink("$datadir/$delf-ip.dat"); // удаляем файл с голосовавшими IP // удаляем строку, соответствующую теме в файле с текущими темами $fp=fopen("$datadir/topic$fid.dat","w"); $kolvotem=sizeof($file)-1; // кол-во тем для уточнения на главной 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); // Блок вычитает 1-цу из кол-ва тем и вычитает кол-во сообщений $lines=file("$datadir/mainforum.dat"); $i=count($lines); // находим по fid номер строки for ($ii=0;$ii< sizeof($lines);$ii++) {$kdt=explode("|",$lines[$ii]); if ($kdt[0]==$fid) $mnumer=$ii;} $dt=explode("|",$lines[$mnumer]); $dt[5]=$dt[5]-$minmsg; if ($kolvotem=="0") $dt[5]="0"; if ($dt[5]<0) $dt[5]="0"; if ($dt[4]<0) $dt[4]="0"; // если удаляемая тема стоит на главной как последняя, то удаляем её с главной if ($dt[3]==$delf or $dt[5]==0) {$dt[6]="";$dt[7]="";$dt[8]="";$dt[9]="";$dt[10]="";} $text="$dt[0]|$dt[1]|$dt[2]|$dt[3]|$kolvotem|$dt[5]|$dt[6]|$dt[7]|$dt[8]|$dt[9]|$dt[10]|$dt[11]|$dt[12]||"; $file=file("$datadir/mainforum.dat"); $fp=fopen("$datadir/mainforum.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); // удаляем объявление из 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[1]==$id) unset($file[$i]); } fputs($fp, implode("",$file)); flock ($fp,LOCK_UN); fclose($fp); Header("Location: admin.php?id=$fid&page=$page"); exit; } } // Блок УДАЛЕНИЯ выбранного СООБЩЕНИЯ 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"); 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) unset($file[$i]); } fputs($fp, implode("",$file)); flock ($fp,LOCK_UN); fclose($fp); $topicxd--; $file=file("$datadir/$id.dat"); //переписываем автора последнего сообщения в теме $dt=explode("|",$file[count($file)-1]); $avtor=$dt[0]; $data=$dt[5]; $time=$dt[6]; // Блок вычитает 1-цу из кол-ва сообщений на главной $lines = file("$datadir/mainforum.dat"); $i=count($lines); // находим по fid номер строки for ($ii=0;$ii< sizeof($lines);$ii++) { $kdt=explode("|",$lines[$ii]); if ($kdt[0]==$fid) $mnumer=$ii; } $dt=explode("|",$lines[$mnumer]); $dt[5]--; if ($dt[5]<0) $dt[5]="0"; $text="$dt[0]|$dt[1]|$dt[2]|$dt[3]|$dt[4]|$dt[5]|$avtor|$data|$time|$dt[9]|$dt[10]|$dt[11]||$dt[12]||"; $file=file("$datadir/mainforum.dat"); $fp=fopen("$datadir/mainforum.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); Header("Location: admin.php?id=$id&page=$page#m$topicxd"); exit; } } // Добавление ФОРУМА / РАЗДЕЛА +++ if(isset($_GET['event'])) { if ($_GET['event'] =="addmainforum") { $ftype=$_POST['ftype']; $zag=$_POST['zag']; $msg=$_POST['msg']; $id="101"; if ($zag=="") exit("$back и введите заголовок!"); // пробегаем по файлу с номерами разделов/топиков - ищем наибольшее и добавляем +1 if (is_file("$datadir/mainforum.dat")) { $lines=file("$datadir/mainforum.dat"); $imax=count($lines); $i=0; do {$dt=explode("|", $lines[$i]); if ($id<$dt[0]) {$id=$dt[0];} $i++; } while($i<$imax); $id++; } if ($id<101) $id=101; if ($id>999) exit("Номер не может быть более 999"); $zag=str_replace("|","I",$zag); $msg=str_replace("|","I",$msg); if ($ftype=="") $record="$id|$zag|$msg||0|0||$date|$time||||||"; else $record="$id|$ftype|$zag|"; $record=replacer($record); // создаём пустой файл с рубриками if ($ftype=="") { $fp=fopen("$datadir/topic$id.dat","a+"); flock ($fp,LOCK_EX); fputs($fp,""); fflush ($fp); flock ($fp,LOCK_UN); fclose($fp); } // запись данных на главную страницу $fp=fopen("$datadir/mainforum.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=""; // Считываем оба файла в память $dat="$datadir/usersdat.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 необходимо Пересчитать статистику участников!!! Файл стистики повреждён!!!"); /* kaksort 1 - Имени $dt[0] 2 - Кол-ву сообщений $st[2] 3 - Кол-ву звёзд dt[2] 4 - Репутации $st[3] 5 - Дате регистрации $dt[4] 6 - Активности $dt[4]/$st[2] */ // при склеивании на первое место ставим нужный параметр if ($kaksort==1) {$name=strtolower($dt[0]); $lines[$i]="$name|";} if ($kaksort==2) {$msg="0".+9999-$st[2]; $lines[$i]="$msg|";} if ($kaksort==3) {$msg="0".+99-$dt[2]; $lines[$i]="$msg|";} if ($kaksort==4) {$msg="0".+9000-$st[3]; $lines[$i]="$msg|";} if ($kaksort>4) { $akt=explode(".",$dt[4]); $tekdt=mktime(); $datereg=mktime(0,0,0,$akt[1],$akt[0],$akt[2]); $aktiv=round(($tekdt-$datereg)/86400); $aktiv=round(100*$msguser/$aktiv)/100; if ($kaksort==5) $lines[$i]="$datereg|"; if ($kaksort==6) $lines[$i]="$aktiv|"; } // Склеиваем два файла в одну переменную $lines[$i].="$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]|$st[1]|$st[2]|$st[3]|$st[4]|$st[5]|||\r\n"; } // конец FOR // сортируем массив setlocale(LC_ALL,'ru_RU.CP1251'); // ! РАЗРЕШАЕМ РАБОТУ ФУНКЦИЙ, работающих с регистором и с РУССКИМИ БУКВАМИ function prcmp ($a, $b) {if ($a==$b) return 0; if ($a<$b) return -1; return 1;} // Функция сортировки usort($lines,"prcmp"); // сортируем дни по возрастанию // разделяем на два массива и по очереди их сохраняем $dlines=null; $dlines="\r\n"; $slines=null; $slines="ИМЯ_ЮЗЕРА|Тем|Сообщений|Репутация|Предупреждения Х/5|Когда последний раз меняли рейтинг в UNIX формате|||\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]|||\r\n"; $slines.="$nt[1]|$nt[15]|$nt[16]|$nt[17]|$nt[18]|$nt[19]|||\r\n"; } // запись данных $fp=fopen("$datadir/usersdat.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") { $nextnum=$_POST['nextnum']; $frd=$_POST['frd']; $ftype=$_POST['ftype']; $zag=$_POST['zag']; if ($zag=="") exit("$back и введите заголовок!"); $zag=str_replace("|","I",$zag); if ($ftype == "") { $addmax=$_POST['addmax']; $zvezdmax=$_POST['zvezdmax']; $msg=$_POST['msg'];$idtemka=$_POST['idtemka'];$kt=$_POST['kt'];$km=$_POST['km'];$namem=$_POST['namem'];$datem=$_POST['datem'];$timem=$_POST['timem'];$temka=$_POST['temka'];$timetk=$_POST['timetk']; $msg=str_replace("|","I",$msg); $msg=str_replace("\r\n", "
", $msg); $txtmf="$nextnum|$zag|$msg|$idtemka|$kt|$km|$namem|$datem|$timem|$timetk|$temka|$addmax|$zvezdmax||";} else $txtmf="$nextnum|$ftype|$zag|"; $txtmf=htmlspecialchars($txtmf); $txtmf=stripslashes($txtmf); $txtmf=str_replace("\r\n","
",$txtmf); $file=file("$datadir/mainforum.dat"); $fp=fopen("$datadir/mainforum.dat","a+"); flock ($fp,LOCK_EX); ftruncate ($fp,0);//УДАЛЯЕМ СОДЕРЖИМОЕ ФАЙЛА 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") { // Выбрано редактирование ТЕМЫ $rd=replacer($_POST['rd']); $id=$rd;// - уникальный номер темы, которую необходимо заменить $changefid=$_POST['changefid']; if (isset($_GET['page'])) $page=$_GET['page']; else $page="0"; $oldzag=replacer($_POST['oldzag']); // старое название темы (до переименования) $name=$_POST['name']; $who=$_POST['who']; $email=$_POST['email']; $zag=$_POST['zag']; $msg=$_POST['msg']; $datem=$_POST['datem']; $timem=$_POST['timem']; $fid=substr($rd,0,3); $timetk=$_POST['timetk']; $status=$_POST['status']; $goto=$_POST['goto']; if ($goto==1) $goto="admin.php?id=$changefid"; else $goto="admin.php?id=$fid&page=$page"; if ($zag=="") exit("$back и введите ТЕМУ, она пустая!"); $text="$name|$who|$email|$zag|$msg|$datem|$timem|$rd|$status|$timetk|||||"; $text=replacer($text); $text=str_replace("<br>","
",$text); // БЛОК объединения тем // I. в topic$temaplus.dat нужно удалить строку с этой темой $temaplus=replacer($_POST['temaplus']); $temakuda=replacer($_POST['temakuda']); if (strlen($temaplus)>1 and is_file("$datadir/$temaplus.dat")) { $file=file("$datadir/topic$fid.dat"); $fp=fopen("$datadir/topic$fid.dat","a+"); flock ($fp,LOCK_EX); ftruncate ($fp,0);//УДАЛЯЕМ СОДЕРЖИМОЕ ФАЙЛА for ($i=0;$i2) exit("$back. Попытка взлома. Хакерам здесь не место."); // защита по топику fid if (!ctype_digit($fid) or strlen($fid)>3) exit("$back. Попытка взлома. Хакерам здесь не место."); // проходим по всем разделам и топикам - ищем запращиваемый // на тот случай, если mainforum.dat - пуст, подключаем резервную копию $realbase="1"; if (is_file("$datadir/mainforum.dat")) $mainlines=file("$datadir/mainforum.dat"); if (!isset($mainlines)) $datasize=0; else $datasize=sizeof($mainlines); if ($datasize<=0) {if (is_file("$datadir/copy.dat")) {$realbase="0"; $mainlines=file("$datadir/copy.dat"); $datasize=sizeof($mainlines);}} if ($datasize<=0) exit("$back. Проблемы с Базой данных - обратитесь к администратору"); $i=count($mainlines); $realfid=null; do {$i--; $dt=explode("|", $mainlines[$i]); if ($dt[0]==$fid) {$realfid=$i; if ($dt[1]=="razdel") exit("$back. Попытка взлома.");} // присваиваем $realfid - № п/п строки } while($i>0); if (!isset($realfid)) exit("$back. Ошибка с номером рубрики. Она не существует в базе."); $dt=explode("|",$mainlines[$realfid]); if (is_file("$datadir/topic$fid.dat")) {$tlines=file("$datadir/topic$fid.dat"); $tc=count($tlines)-2; $i=$tc+2; $ok=null; // нужно пробежаться по топику, найти тему. Если есть - нормуль, нету - значит добавление сообщений ЗАПРЕЩЕНО! if ($_GET['event']=="addanswer") { do {$i--; $tdt=explode("|",$tlines[$i]); //print"$tdt[7]==$id
"; if ($tdt[7]=="$id") {$ok=1; if ($tdt[8]=="closed") exit("$back тема закрыта и добавление сообщений запрещено!"); } } while($i>0); if ($ok!=1) exit("$back тема закрыта и добавление сообщений запрещено!"); } } else $tc="2"; if ($dt[11]>0 and $tc>=$dt[11]) exit("$back. Превышено ограничение на кол-во допустимых тем в данной рубрике! Не более $dt[11] тем!"); // проверка Логина/Пароля юзера. Может он хакер, тогда облом ему // Этап 1 if (isset($_COOKIE['wrfcookies'])) { $wrfc=$_COOKIE['wrfcookies']; $wrfc=htmlspecialchars($wrfc); $wrfc=stripslashes($wrfc); $wrfc=explode("|", $wrfc); $wrfname=$wrfc[0]; $wrfpass=$wrfc[1]; } else {unset($wrfname); unset($wrfpass);} // Этап 2 if ($who=="да") { if (isset($wrfname) & isset($wrfpass)) { $lines=file("$datadir/usersdat.php"); $i=count($lines); do {$i--; $rdt=explode("|", $lines[$i]); if (isset($rdt[1])) { $realname=strtolower($rdt[0]); if (strtolower($wrfname)===$realname & $wrfpass===$rdt[1]) $ok="$i"; } } while($i > "1"); if (!isset($ok)) {setcookie("wrfcookies","",time()); exit("Ошибка при работе с КУКИ! Вы не сможете оставить сообщение, попробуйте подать его как гость. Ваш логин и пароль не найдены в базе данных, попробуйте зайти на форум вновь. Если ошибка повторяется - обратитесь к администратору форума.");} }} if (!isset($name) || strlen($name) > $maxname || strlen($name) <1) exit("$back Ваше ИМЯ пустое, или превышает $maxname символов!
"); if (strlen(ltrim($zag))<3 || strlen($zag) > 200) exit("$back Слишком короткое название темы или название превышает $maxzag символов!"); if (strlen(ltrim($msg))<2 || strlen($msg) > 10000) 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 адрес!"); // генерируем имя файлу с темой if ($_GET['event'] =="addtopic") {$add=null; $z=null; do {$id=mt_rand(1000,9999); if ($fid<10) $add="0"; if (!is_file("$datadir/$add$fid$id.dat") and strlen($id)==4) {$z++;} } while ($z<1); $id="$add$fid$id";} if ((!ctype_digit($id)) or (strlen($id)>15)) exit("$back. Попытка взлома. $id должно быть числом. Хакерам здесь не место."); if (strlen(ltrim($zag))<3) exit("$back ! Ошибка в вводе данных заголовка!"); $tektime=time(); $name=wordwrap($name,30,' ',1); // разрываем длинные строки $zag==wordwrap($zag,30,' ',1); $msg=wordwrap($msg,110,' ',1); $name=str_replace("|","I",$name); $who=str_replace("|","|",$who); $email=str_replace("|","|",$email); $zag=str_replace("|","|",$zag); $msg=str_replace("|","|",$msg); $smname=$name; if (strlen($name)>18) {$smname=substr($name,0,18); $smname.="..";} $smzag=$zag; if (strlen($zag)>24) {$smzag=substr($zag,0,24); $smzag.="..";} $ip=$_SERVER['REMOTE_ADDR']; // определяем IP юзера $text="$name|$who|$email|$zag|$msg|$date|$time|$id||$tektime|$smname|$smzag|||||$ip||||"; $text=replacer($text); $exd=explode("|",$text); $name=$exd[0]; $zag=$exd[3]; $smname=$exd[10]; $smzag=$exd[11]; $smmsg=$exd[4]; 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); // РАЗшифровываем символ ' $fdate=replacer($_POST['fdate']); $ftime=replacer($_POST['ftime']); $msg=replacer($msg); $file=file("$datadir/$id.dat"); $fs=count($file)-1; $i="-1"; $timetek=time(); $timefile=filemtime("$datadir/$id.dat"); $timer=$timetek-$timefile; // узнаем сколько прошло времени (в секундах) $records=file_get_contents("$datadir/$id.dat"); $records=str_replace("|$oldmsg|$fdate|$ftime|","|$msg|$fdate|$ftime|",$records); // Делаем замену |старое сообщение|ДАТА|ВРЕМЯ| на новое //print"$oldmsg\r\r\n



$msg\r\r\n


$records"; exit; // РАСКОМЕНТИРОВАТЬ ЕСЛИ СООБЩЕНИЯ НЕ РЕДАКТИРУЮТСЯ! $fp=fopen("$datadir/$id.dat","a+"); flock ($fp,LOCK_EX); ftruncate ($fp,0);//УДАЛЯЕМ СОДЕРЖИМОЕ ФАЙЛА fputs($fp,$records); //do {$i++; if ($i==$topicrd) fputs($fp,"$text\r\n"); else fputs($fp,$file[$i]); } while($i < $fs); 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=$id&page=$page"); exit; } print""; // ЕСЛИ введена команда АП, то меняем дату создания файла и тема самая первая будет if ($_GET['event'] =="addanswer") { // при ОТВЕТе В ТЕМЕ if (is_file("$datadir/$id.dat")) {$linesn=file("$datadir/$id.dat"); $in=count($linesn)-1;} // Проверяем, давно ли реактивировали тему $timetek=time(); $timefile=filemtime("$datadir/$id.dat"); $timer=$timetek-$timefile; // узнаем сколько прошло времени (в секундах) // $timer<10 - 10 секунд защита от антифлуда if ($smmsg=="ап!") { if ($timer<10 and $timer>0) exit("$back тема была активна менее $timer секунд назад."); touch("$datadir/$id.dat"); print "
Спасибо, $name, тема реактивирована.

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

ДАЛЬШЕ >>>
"; exit; } if ($timer<10 and $timer>0) exit("$back тема была активна менее $timer секунд назад."); } $razdelname=""; if ($realbase=="1" and $maxzd<1) { // Если подключена рабочая база, а не копия $lines=file("$datadir/mainforum.dat"); $dt=explode("|", $lines[$realfid]); $dt[5]++; if ($_GET['event']=="addtopic") $dt[4]++; // НЕ менять 4-е строки пусть как написано так и будет! if (!isset($dt[11])) $dt[11]="100"; $dt[11]=str_replace(" ", "
", $dt[11]); if (!isset($dt[12])) $dt[12]=""; $dt[12]=str_replace(" ", "
", $dt[12]); $txtdat="$dt[0]|$dt[1]|$dt[2]|$id|$dt[4]|$dt[5]|$smname|$date|$time|$tektime|$smzag|$dt[11]|$dt[12]||"; $razdelname=$dt[1]; // запись данных на главную страницу $fp=fopen("$datadir/mainforum.dat","a+"); flock ($fp,LOCK_EX); ftruncate ($fp,0);//УДАЛЯЕМ СОДЕРЖИМОЕ ФАЙЛА for ($i=0;$i<=(sizeof($lines)-1);$i++) { if ($i==$realfid) fputs($fp,"$txtdat\r\n"); else fputs($fp,$lines[$i]); } fflush ($fp); flock ($fp,LOCK_UN); fclose($fp); } // if ($realbase==1) if ($newmess=="1" and $maxzd<1) { // запись в отдельный файл нового сообщения if (is_file("$datadir/topic$fid.dat")) $nlines=count(file("$datadir/topic$fid.dat")); else $nlines=1; if (is_file("$datadir/$id.dat")) $nlines2=count(file("$datadir/$id.dat"))+1; else $nlines2=1; $newmessfile="$datadir/news.dat"; $newlines=file("$newmessfile"); $ni=count($newlines)-1; $i2=0; $newlineexit=""; $nmsg=substr($msg,0,150); // образаем сообщение до 150 символов $ntext="$fid|$id|$date|$time|$smname|$zag|$nmsg...|$nlines|$nlines2|$razdelname|$who||||"; $ntext=str_replace(" ", "
", $ntext); // Блок проверяет, есть ли уже новое сообщение в этой теме. Если есть - отсеивает. На выходе - массив без этой строки. for ($i=0;$i<=$ni;$i++) { $ndt=explode("|",$newlines[$i]); if (isset($ndt[1])) {if ($id!=$ndt[1]) {$newlineexit.="$newlines[$i]"; $i2++;}} } // Записываем свежее сообщение в массив и далее сохраняем его в файл if ($maxzd<1) { // Если тема доступна для всех - нет ограничений по звёздам if ($i2>0) { // Если есть такая тема, то пишем весь массив, иначе тока строку $newlineexit.=$ntext; $fp=fopen("$newmessfile","w"); flock ($fp,LOCK_EX); fputs($fp,"$newlineexit\r\n"); fflush ($fp); flock ($fp,LOCK_UN); fclose($fp); } else { $fp=fopen("$newmessfile","a+"); flock ($fp,LOCK_EX); fputs($fp,"$ntext\r\n"); fflush ($fp); flock ($fp,LOCK_UN); fclose($fp); } $file=file($newmessfile);$i=count($file); if ($i>="15") { $fp=fopen($newmessfile,"w"); flock ($fp,LOCK_EX); unset($file[0]); fputs($fp, implode("",$file)); fflush ($fp); flock ($fp,LOCK_UN); fclose($fp); } } } } // if ($newmess==1) // БЛОК добавляет +1 к репе и +1 к сообщению или +1 к кол-ву тем, созданных юзером if (isset($_COOKIE['wrfcookies']) and (isset($ok))) { $ufile="$datadir/userstat.dat"; $ulines=file("$ufile"); $ui=count($ulines)-1; $ulinenew=""; // Ищем юзера по имени в файле userstat.dat for ($i=0;$i<=$ui;$i++) {$udt=explode("|",$ulines[$i]); if ($udt[0]==$wrfname) { $udt[3]++; $udt[2]++; if ($_GET['event']=="addtopic") $udt[1]++; $ulines[$i]="$udt[0]|$udt[1]|$udt[2]|$udt[3]|$udt[4]|$udt[5]||||\r\n";} $ulinenew.="$ulines[$i]";} // Пишем данные в файл $fp=fopen("$ufile","w"); flock ($fp,LOCK_EX); fputs($fp,"$ulinenew"); fflush ($fp); flock ($fp,LOCK_UN); fclose($fp); } // if isset($ok) if ($_GET['event'] =="addtopic") { // Добавление ТЕМЫ - запись данных // Пишем В ТОПИК $fp=fopen("$datadir/topic$fid.dat","a+"); flock ($fp,LOCK_EX); fputs($fp,"$text\r\n"); fflush ($fp); flock ($fp,LOCK_UN); fclose($fp); // Пишем В ТЕМУ $fp=fopen("$datadir/$fid$id.dat","a+"); flock ($fp,LOCK_EX); fputs($fp,"$text\r\n"); fflush ($fp); flock ($fp,LOCK_UN); fclose($fp); print "
Спасибо, $name, за добавление темы!

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

ДАЛЬШЕ >>>
"; exit; } if ($_GET['event'] =="addanswer") { //ОТВЕТ В ТЕМЕ - запись данных $timetek=time(); $timefile=filemtime("$datadir/$id.dat"); $timer=$timetek-$timefile; // узнаем сколько прошло времени (в секундах) $fp=fopen("$datadir/$id.dat","a+"); flock ($fp,LOCK_EX); fputs($fp,"$text\r\n"); fflush ($fp); flock ($fp,LOCK_UN); fclose($fp); if ($timer<0) {$viptime=strtotime("+2 year"); touch("$datadir/$id.dat",$viptime);} $in=$in+2; $page=ceil($in/$qq); // расчитываем верную страницу и номер сообщения print "
Спасибо, $name, Ваш ответ успешно добавлен.

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

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

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

$back

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

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

$back

"); else exit("Ошибка восстановления из копии БАЗЫ Данных. Попробуйте вручную файлам copy.dat и mainforum.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['fdesription']); $fd=str_replace("\\","/",$fd); $fd=str_replace("?>","? >",$fd); $fd=str_replace("\"","'",$fd); $fdesription=str_replace("\r\n","
",$fd); mt_srand(time()+(double)microtime()*1000000); $rand_key=mt_rand(1000,9999); // Генерируем случайное число для цифрозащиты $gmttime=($_POST['deltahour'] * 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['fname']=replacer($_POST['fname']); $configdata="
Вернитесь назад\"; // Удобная строка\r\n". "$"."smiles=".$smiles."// СМАЙЛИКИ (имя файла, символ для вставки, -//-)\r\n". "$"."date=date(\"d.m.Y\", time()+$gmttime); // число.месяц.год\r\n". "$"."deltahour=\"".$_POST['deltahour']."\"; // Учитываем кол-во часов со смещением относительно хостинга по формуле: ЧЧ * 3600\r\n". "$"."time=date(\"H:i:s\",time()+$gmttime); // часы:минуты:секунды\r\n?>"; $file=file("config.php"); $fp=fopen("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/mainforum.dat")) $mainlines=file("$datadir/mainforum.dat"); if (!isset($mainlines)) $datasize=0; else $datasize=sizeof($mainlines); if ($datasize<=0) {if (is_file("$datadir/copy.dat")) {$mainlines=file("$datadir/copy.dat"); $datasize=sizeof($mainlines);}} if ($datasize<=0) exit("

Файл РУБРИК несуществует! создайте рубрики!

"); // БЛОК подключает копию главного файла при повреждении if (is_file("$datadir/mainforum.dat")) $mainlines=file("$datadir/mainforum.dat"); $imax=count($mainlines); $i=$imax; if (!isset($mainlines)) $datasize=0; else $datasize=sizeof($mainlines); if ($datasize<=0) {if (is_file("$datadir/copy.dat")) {$mainlines=file("$datadir/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/topic$id.dat")) $error="ый Вами раздел"; if (strlen($id)> 3 and !is_file("$datadir/$id.dat")) $error="ая Вами тема"; if (!ctype_digit($id)) $error="ая Вами тема или раздел"; if (isset($_GET['quotemsg'])) $error=TRUE; 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[0]==$fid) { $frname="$dt[1] ->"; if (isset($dt[11])) { if($dt[11]>0) $maxtem=$dt[11]; else $maxtem="999";}} } while($i >0); //$frtname="1"; $frname="2"; $fname="3"; // Блок считывает название темы для отображения в шапке форума if (strlen($id)>3 and is_file("$datadir/topic$fid.dat")) { $lines=file("$datadir/topic$fid.dat"); $imax=count($lines); $i=$imax; do {$i--; $dt=explode("|",$lines[$i]); if($dt[7]=="$fid$id") $frtname="$dt[3] ->"; } while ($i>0); } if ($error==TRUE) { // ЗАПРЕЩАЕМ ИНДЕКСАЦИЮ страниц с цитированием / УДАЛЁННЫЕ РАЗДЕЛЫ / ТЕМЫ! $topurl="$fskin/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/topic$id.dat"); $imax=count($lines); if (isset($_GET['page'])) $page=$_GET['page']; else $page=1; $maxikpage=ceil($imax/$qqmain); } } // if (isset($_GET['id'])) // печатаем ВЕРХУШКУ форума если есть файл ?> Админка :: <?print"$frtname $frname $fname";?> "> "> '; // определяем тип: форум или заголовок if ($dt[1]=="razdel") print ""; else { if (is_file("$datadir/$dt[3].dat")) { $msgsize=sizeof(file("$datadir/$dt[3].dat")); // считаем кол-во страниц в файле if ($msgsize>$qq) $page=ceil($msgsize/$qq); else $page=1; } else {$msgsize=""; $page=1;} if ($dt[7]==$date) $dt[7]="сегодня"; $maxzvezd=null; if (isset($dt[12])) { if ($dt[12]>0) {$maxzvezd="*Доступна участникам, имеющим $dt[12] звезд"; $dt[4]=""; $dt[5]=""; if ($dt[12]==1) $maxzvezd.="у"; if ($dt[12]==2 or $dt[12]==3 or $dt[12]==4) $maxzvezd.="ы"; $maxzvezd.=" минимум";}} print " "; $itogotem=$itogotem+$dt[4]; $itogomsg=$itogomsg+$dt[5]; } } while($a1 < $u); echo'

Вы вошли как

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



Сделать копию БД Восстановить из копии Участники IP-Блокировка Рассылка сообщений участникам Пересчитать Пересчитать статистику участников Настройки"; print"ПоискВыход из админки"; // читаем файл с именами пользователей в память чтобы показать последнего $userlines=file("$datadir/usersdat.php"); $ui=count($userlines)-1; $tdt = explode("|", $userlines[$ui]); if (is_file("$datadir/copy.dat")) { if (count(file("$datadir/copy.dat"))<1) $a2="НО файл копии ПУСТ! Срочно пересоздайте!
(смотрите права доступа, если эо сообщение повторяется)"; else $a2=""; $a1=round((mktime()-filemtime("$datadir/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' '; // Выводим qq сообщений на текущей странице $addform="
Форумы Тем/Макс. Ответов Обновление
Добавление Раздела / Форума
Тип добавляемого пункта Раздел    Форум
Заголовок
Описание
"; if (!is_file("$datadir/mainforum.dat")) exit("

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

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

Файл mainforum.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[0]; echo'
'; if ($ktotut==1) { // только админ может управлять разделами print"
Вв Нз .P. .X.
"; } echo'
$dt[2]
 
$dt[1] $maxzvezd
$dt[2]
$dt[4] / $dt[11] $dt[5] тема: $dt[10]
автор: $dt[6]
дата: $dt[7] - $dt[8]

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

"; } } // Конец редактирования ФОРУМА else { if ($ktotut==1) print "$addform"; } if ($statistika==TRUE) { print"
Статистика
Сообщений: $itogomsg
Тем: $itogotem
Всего зарегистрировано участников: $ui
Последним зарегистрировался: $tdt[0]
"; // СТАТИСТИКА -= Последние сообщения с форума =- if (is_file("$datadir/news.dat")) { $newmessfile="$datadir/news.dat"; $lines=file($newmessfile); $i=count($lines); //if ($i>10) $i=10; (РАСКОМЕНТИРУЙ - ВОТ ГДЕ СИЛА!!! ;-)) if ($i>1) { echo('
'); $a1=$i-1;$u="-1"; // выводим данные по возрастанию или убыванию do {$dt=explode("|", $lines[$a1]); $a1--; if (isset($dt[1])) { // Если строчка потерялась в скрипте (пустая строка) - то просто её НЕ выводим $dt[6]=htmlspecialchars($dt[6]); $dt[6]=str_replace("[b] "," ",$dt[6]); $dt[6]=str_replace("[/b]"," ",$dt[6]); $dt[6]=str_replace("[RB] "," ",$dt[6]); $dt[6]=str_replace("[/RB]"," ",$dt[6]); $dt[6]=str_replace("[Code] "," ",$dt[6]); $dt[6]=str_replace("[/Code]"," ",$dt[6]); $dt[6]=str_replace("[Quote] "," ",$dt[6]); $dt[6]=str_replace("[/Quote]"," ",$dt[6]); $dt[6]=str_replace("
","\r\n", $dt[6]); $dt[6]=str_replace("'","`", $dt[6]); $dt[2]=str_replace(".201",".1", $dt[2]); $dt[2]=substr($dt[2],0,8); $dt[3]=substr($dt[3],0,5); if ($dt[8]>$qq) $page=ceil($dt[8]/$qq); else $page=1; // Считаем страницу if ($dt[10]=="да") {$codename=urlencode($dt[4]); $name="$dt[4]";} else $name="гость $dt[4]"; print" "; } // если строчка потерялась $a11=$u; $u11=$a1; } while($a11 < $u11); echo'
Последние сообщения
.X.
$dt[2] - $dt[3]: $dt[9] -> $dt[5] - $name.
';} } // Конец блока последних сообщений } } // конец главной страницы // Общая переменная! 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 "
   $fname -> $frname
"; $addbutton="
X/P Тема Cообщений Автор Обновления
"; // определяем есть ли информация в файле с данными if (is_file("$datadir/topic$fid.dat")) { $msglines=file("$datadir/topic$fid.dat"); if (count($msglines)>0) { if (count($msglines)>$maxtem-1) $addbutton="
 
"; } //if (is_file) } while($lm < $fm); // формируем переменную $pageinfo - со СПИСКОМ СТРАНИЦ $pageinfo=""; $addpage=""; $maxpage=ceil(($maxi+1)/$qq); 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 "
Количество допустимых тем в рубрике исчерпано."; // Выводим qqmain сообщений на текущей странице $lines=file("$datadir/topic$fid.dat"); $i=count($lines); $maxi=count($lines)-1; $n="0"; // БЛОК СОРТИРОВКИ: последние ответы ВВЕРХУ (по времени создания файла с темой)! do {$i--; $dt=explode("|",$lines[$i]); $filename="$dt[7].dat"; if (is_file("$datadir/$filename")) $ftime=filemtime("$datadir/$filename"); else $ftime=""; $newlines[$i]="$ftime|$dt[7]|$i|"; } while($i > 0); usort($newlines,"prcmp"); // $newlines - массив с данными: ДАТА | ИМЯ_ФАЙЛА_С_ТЕМОЙ | № п/п | // $lines - массив со всеми темами выбранной рубрики $i=$maxi; do {$i--; $dtn=explode("|", $newlines[$i]); $numtp="$dtn[2]"; $lines[$i]="$lines[$numtp]"; } while($i > 0); // КОНЕЦ блока сортировки // Исключаем ошибку вызова несуществующей страницы if (!isset($_GET['page'])) $page=1; else { $page=$_GET['page']; if (!ctype_digit($page)) $page=1; if ($page<1) $page=1; } // Показываем QQ ТЕМ $fm=$maxi-$qq*($page-1); if ($fm<"0") $fm=$qq; $lm=$fm-$qq; if ($lm<"0") $lm="-1"; $timetek=time(); do {$dt=explode("|", $lines[$fm]); // нужно для определения темы на VIP-статус if (is_file("$datadir/$dt[7].dat")) $ftime=filemtime("$datadir/$dt[7].dat"); else $ftime=""; $timer=$timetek-$ftime; // узнаем сколько прошло времени (в секундах) $fm--; $num=$fm+2; $numid=$fm+1; $filename=$dt[7]; 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[9])) {if ($dtt[9]>$wrftime2) $foldicon="foldernew.gif";}} if (strlen($dt[8])>1 and $dt[8]=="closed") {if ($msgsize<"20") $foldicon="close.gif"; else $foldicon="closed.gif"; }} else $foldicon="foldernew.gif"; // --------- Конец print "
.P.
.X.
.Н.
"; if ($timer<0) echo'VIP '; print"$dt[3]"; if ($msgsize>$qq) { // ВЫВОДИМ СПИСОК ДОСТУПНЫХ СТРАНИЦ ТЕМЫ $maxpaget=ceil($msgsize/$qq); $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[0]); if ($dt[1]=="да") print "$dt[0]
$users"; else print"$dt[0]
$guest"; 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 (strlen...) только если файл есть и имеет верный формат - выводим $dt[6]=substr($dt[6],0,-3); if ($dt[5]===$date) $dt[5]="сегодня"; print "
  автор: $dt[0]
  дата: $dt[5]
  время: $dt[6]
$pageinfo"; }} // ------------ Выбрано редактирование ТЕМЫ if (isset($_GET['rd'])) { if ($_GET['rd'] !="") { $rd=replacer($_GET['rd']); $i="-1"; // Бежим по массиву тем и ищем ту тему, которую вызвали на редактирование do {$i++; $dt=explode("|",$lines[$i]); if ($dt[7]===$rd) $i=$maxi; // ЕСЛИ нашли тему, значит завершаем цикл и дальше работаем со строкой } while($i < $maxi); $moddate=filemtime("$datadir/$dt[7].dat"); $tektime=mktime(); if ($moddate<$tektime) {$vt1="checked"; $vt2="";} else {$vt2="checked"; $vt1="";} if ($dt[8]=="closed") {$ct2="checked"; $ct1="";} else {$ct1="checked"; $ct2="";} print "
Редактирование Темы
Название темы открыта   закрыта
Объединить с другой темой? "; if ($maxi>0) { // БЫСТРЫЙ ПЕРЕХОД к теме echo ' в конец темы   В начало темы '; } // if($maxi>0) print"
Переместить в другой раздел ? обычная тема   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;} // Ищем тему в topicХХ.dat - проверяем не закрыта ли тема? $msglines=file("$datadir/topic$fid.dat"); $mg=count($msglines); $closed="no"; do {$mg--; $mt=explode("|",$msglines[$mg]); if ($mt[7]==$id and $mt[8]=="closed") $closed="yes"; } while($mg > "0"); $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; // Исключаем ошибку вызова несуществующей страницы 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)/$qq); 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=$qq*($page-1); if ($fm>$maxi) $fm=$maxi-$qq; $lm=$fm+$qq; 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) { // Если строчка потерялась в скрипте (пустая строка) - то просто её НЕ выводим $msg=str_replace("[b]","", $dt[4]); $msg=str_replace("[/b]","",$msg); $msg=str_replace("[RB]","",$msg); $msg=str_replace("[/RB]","",$msg); $msg=preg_replace("#\[Quote\]\s*(.*?)\s*\[/Quote\]#is","
Цитата:
$1
",$msg); $msg=preg_replace("#\[Code\]\s*(.*?)\s*\[/Code\]#is","
PHP код:
$1
",$msg); if ($smile==TRUE) {$i=count($smiles)-1; // заменяем текстовые смайлики на графические если разрешено for($k=0; $k<$i; $k=$k+2) {$j=$k+1; $msg=str_replace("$smiles[$j]","",$msg);}} $msg=str_replace("<br>","
",$msg); $msg=preg_replace('#\[img(.*?)\](.+?)\[/img\]#','',$msg); // Если разрешена публикация УРЛов if ($liteurl==TRUE) $msg = preg_replace ("/([\s>\]]+)(http|https|ftp|goper):\/\/([a-zA-Z0-9\.\?&=\;\-\/_]+)([\W\s<\[]+)/", "\\1\\2://\\3\\4", $msg); // считываем в память данные по пользователю if ($dt[1]=="да") { $userlines=file("$datadir/usersdat.php"); $usercount=count($userlines); $ui=$usercount-1; $iu=$usercount; do {$iu--; $du=explode("|", $userlines[$iu]); if ($du[0]==$dt[0]) { if (isset($du[12])) {$status=$du[13]; $reiting=$du[2]; $youavatar=$du[12]; $email=$du[3]; $icq=$du[7]; $site=$du[8]; $userpn=$iu;} $youwr=preg_replace("#(\[url=([^\]]+)\](.*?)\[/url\])|(http://(www.)?[0-9a-z\.-]+\.[a-z]{2,6}[0-9a-z/\?=&\._-]*)#","$4 ",$du[11]);} } while($iu > "0"); } if ($tblstyle=="row1") $tblstyle="row2"; else $tblstyle="row1"; if (!isset($m1)) { print "
   $fname $frname $dt[3]
"; echo''; $m1="1"; } print""; } // если строчка потерялась } while($fm < $lm); print"
Автор Сообщение

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


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

"; if (strlen($status)>2 & $dt[1]=="да" & isset($youwr)) print "$status"; else print"$users"; if (isset($reiting)) {if ($reiting>0) {echo'
'; if (is_file("$fskin/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[1]
Сообщений: $ddu[2]
Репутация: $ddu[3] -+
Предупреждения: $ddu[4]
"; }}} if (!isset($dt[16])) $dt[16]=""; // временно, для совместимости с другими версиями print "

IP: $dt[16]
БАН по IP
$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 (isset($dt[12])) { if ($dt[12]!="" and is_file("$filedir/$dt[13]")) { $fsize=round($dt[14]/10.24)/100; print"
Прикреплён файл:удалить фото

"; if (preg_match("/.(jpg|jpeg|bmp|gif|png)+$/is",$dt[13])) print""; else print" $dt[13] ($fsize Кб.)
"; }} // печатаем подпись участника if (isset($youwr)) {if (strlen($youwr)>3) {print "
--------------------------------------------------
$youwr";}} print"
.P..X.
Сообщение # $fm.
Отправлено: $dt[5] - $dt[6]
$pageinfo "; // Выбрана метка .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[4]); $oldmsg=str_replace("'", ":kovichka:",$dt[4]); // шифруем символ ' print "
Сообщение
Имя   E-mail   Участник ? $dt[1]"; if (strlen($dt[1])<1) echo'нет'; } else { print "
Сообщение
Имя "; if (!isset($wrfname)) echo'и E-mail
'; echo'
'; if (!isset($wrfname)) echo' '; else print "$wrfname"; } echo'
Сообщение

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

Смайлики:
'; if ($smile==TRUE) {$i=count($smiles)-1; for($k=0; $k<$i; $k=$k+2) {$j=$k+1; print" ";} } print"RB Ещё смайлы
"; if (isset($_GET['topicrd'])) { 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";// временно так как ввёл новые переменные в config.php if (!isset($specblok2)) $specblok2="0";// --//-- if (!isset($nosssilki)) $nosssilki="0";// --//-- if ($ktotut!=1) {exit("$back! Модераторам запрещено изменять настройки форума! Если нужно сменить пароль - обращайтесь к админу!");} if ($sendmail==TRUE) {$s1="checked"; $s2="";} else {$s2="checked"; $s1="";} if ($sendadmin==TRUE) {$sa1="checked"; $sa2="";} else {$sa2="checked"; $sa1="";} if ($statistika==TRUE) {$st1="checked"; $st2="";} else {$st2="checked"; $st1="";} if ($antispam==TRUE) {$as1="checked"; $as2="";} else {$as2="checked"; $as1="";} if ($newmess==TRUE) {$n1="checked"; $n2="";} else {$n2="checked"; $n1="";} if ($cangutema==TRUE) {$ct1="checked"; $ct2="";} else {$ct2="checked"; $ct1="";} if ($cangumsg==TRUE) {$cm1="checked"; $cm2="";} else {$cm2="checked"; $cm1="";} if ($useactkey==TRUE) {$u1="checked"; $u2="";} else {$u2="checked"; $u1="";} if ($liteurl==TRUE) {$lu1="checked"; $lu2="";} else {$lu2="checked"; $lu1="";} if ($nosssilki==TRUE) {$ns1="checked"; $ns2="";} else {$ns2="checked"; $ns1="";} if ($canupfile==TRUE) {$cs1="checked"; $cs2="";} else {$cs2="checked"; $cs1="";} if ($smile==TRUE) {$sm1="checked"; $sm2="";} else {$sm2="checked"; $sm1="";} if ($specblok1==TRUE) {$sb1="checked"; $sb2="";} else {$sb2="checked"; $sb1="";} if ($specblok2==TRUE) {$bs1="checked"; $bs2="";} else {$bs2="checked"; $bs1="";} if ($stop==TRUE) {$sp1="checked"; $sp2="";} else {$sp2="checked"; $sp1="";} if ($antimat==TRUE) {$am1="checked"; $am2="";} else {$am2="checked"; $am1="";} if ($random_name==TRUE) {$rn1="checked"; $rn2="";} else {$rn2="checked"; $rn1="";} print "
Конфигурирование
Параметр Значение
Название форума
Описание
использовать HTML-теги ЗАПРЕЩЕНО!
Е-майл администратора
Логин и пароль администратора (данные входа в админ.панель со 100% набором прав)*Логин: Пароль:
Логин и пароль модератора (частичный набор прав)*Логин: Пароль:
Блокировка форума: отключить работу форума на добавление тем/сообщений? ДА    НЕТ
При загрузке файла генерировать ему имя случайным образом? да   нет
Сколько очков репутации добавлять при загрузке файла, добавление сообщения, добавлении темы?   ::     ::  
Включить отправку сообщений? да   нет
Мылить админу сообщения о вновь зарегистрированных пользователях? да   нет
Макс. длина имени / заголовка темы / сообщения    .:.       .:.   
Задействовать АНТИМАТ? да   нет
Задействовать АНТИСПАМ / длина кода да   нет    .:.    (от 1 до 9) цифр
Тем / Cообщений / Участников на страницу   .:.     .:.  
Как называть участников НЕ зареганых / зареганых  /  
Требовать активации через емайл при регистрации? да   нет
Создавать темы / Оставлять сообщения гостям можно?Т: да   нет .:. С: да   нет
Запретить гостям добавлять сообщения со ссылками? да   нет
Делать ссылки в тексте активными? да   нет
Включить / отключить графическеие смайлы? включить    отключить
Смещение GMT относительно времени хостинга (GMT + XX часов)
Включить БЛОК 15-и самых обсуждаемых тем? да   нет
Включить БЛОК 10 самых активных пользователей? да   нет
Показывать статистику на главной странице? да   нет. (дни рождения, кол-во тем/сообщений, последние сообщ.)
Создавать файл с новыми сообщениями? да   нет
Папка с данными форума    По умолчанию - ./data
Максимальный размер аватара в байтах
Разрешить загрузку файлов да, только зарегистрированным    нет
Папка для загрузки файлов    По умолчанию - ./load
Максимальный размер файла в байтах
Скин форума
Смайлы (изображение и код)
- меняйте как хотите ***
'; if (isset($smiles) and $smile==TRUE) {$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/usersdat.php"); $ui=count($userlines)-1; $maxi=$ui; $first=0; $last=$ui+1; $statlines=file("$datadir/userstat.dat"); $si=count($statlines)-1; $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]=="мужчина") $tdt[6]="М"; else $tdt[6]="Ж"; if (strlen($tdt[13])<2) $tdt[13]=$users; $delblok.=""; if (strlen($tdt[13])=="6" and ctype_digit($tdt[13])) { print"";} $t3=$t2; $t2=$t1; $t1=$t3; } while ($i<$lm); print"
.X.
$npp $tdt[0][Активировать]. Учётная запись не активирована с $tdt[4]. (емайл: $tdt[3] ключ: $tdt[13])"; } else { //ИМЯ_ЮЗЕРА|Тем|Сообщений|Репутация|Предупреждения Х/5|Когда последний раз меняли рейтинг в UNIX формате||| $tdt[4]=str_replace(".20",".",$tdt[4]); print"$tdt[6]$tdt[4]$tdt[3] $sdt[1] $sdt[2]
  $sdt[4] 
$delblok

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

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

"; if ($error>0) print"$bada"; echo' Удалить тех, чьи учётные записи НЕ АКТИВИРОВАНЫ: Удалить. После удаления нажмите "Пересчитать статистику участников".

* Тем - Скрипт считает кол-во тем, созданных участником с момента регистрации/восстановления файла статистики после сбоя

Сообщений - сколько участник оставил сообщений

Репутация - "Авторитетность" пользователя. Максимум 9999 ед. Автоматически увеличивается на 1 при добавлении сообщения/темы

Система штрафов ещё отлаживается. Будет доступна в следующей версии!!! - ШТРАФЫ:
0 - юзер может всё;
1 - юзеру антифлуд увеличиваем до 60 секунд;
2 - юзер не имеет права менять репу другим;
3 - юзеру запрещаем создавать темы;
4 - блокируем доступ к ответу в темах - только просмотр;
5 - БАН на 1 месяц!

** Активность - кол-во сообщений в сутки разделённая на кол-во дней с момента регистрации;

'; } } if (isset($_GET['event'])) { if ($_GET['event']=="blockip") { // - БЛОКИРОВКА по IP $itogo=0; if (is_file("$datadir/bad_ip.dat")) { $lines=file("$datadir/bad_ip.dat"); $i=count($lines); $itogo=$i; if ($i>0) { echo'
'; do {$i--; $idt=explode("|", $lines[$i]); print""; } while($i > "0"); } else echo'

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


'; } else echo'

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


'; exit("
.X. IP Формулировка
.X.
$idt[0]$idt[1]

Добавь IP НЕдруга!   Формулировка:

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

Всего заБАНено пользователей - $itogo

");}} 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/usersdat.php"); $i = count($lines); $use="0"; do {$i--; $rdt=explode("|", $lines[$i]); if (isset($rdt[1])) { // Если нет потерянных строк в скрипте (пустая строка) if (strlen($rdt[13])=="6" and ctype_digit($rdt[13])) $rdt[13]="ожидание активации"; if ($pname===$rdt[0]) { $ufile="$datadir/userstat.dat"; $ulines=file("$ufile"); $ui=count($ulines)-1; $msgitogo=0; for ($i=0;$i<=$ui;$i++) {$udt=explode("|",$ulines[$i]); $msgitogo=$msgitogo+$udt[2]; if ($udt[0]==$rdt[0]) {$msguser=$udt[2];}} $msgaktiv=round(10000*$msguser/$msgitogo)/100; $akt=explode(".",$rdt[4]); $aktiv=mktime(0,0,0,$akt[1],$akt[0],$akt[2]); $tekdt=mktime(); $aktiv=round(($tekdt-$aktiv)/86400); $aktiv=round(100*$msguser/$aktiv)/100; if (strlen($rdt[13])<2) $rdt[13]=$users; print "

Регистрационные данные ПОЛЬЗОВАТЕЛЯ $pname
Поля отмеченные * обязательны к заполнению, если не указано обратное
Имя участника:$rdt[0]
Дата регистрации:$rdt[4]
Пол:
$rdt[6]
Отправить личное сообщение на e-mail:
Написать персональное сообщение (сюда на форум):
Активность:Всего сообщений: $msguser [$msgaktiv% от общего числа / $aktiv сообщений в сутки]
Статус:$rdt[13]
Сменить пароль: *(если хотите сменить, то введите новый пароль, иначе оставьте как есть!)
Адрес e-mail: *
Введите существующий электронный адрес! Форум защищён от роботов-спамеров.
День варенья:
Введите день рождения в формате: ДД.ММ.ГГГГГ, если не секрет.
Номер в ICQ:
Введите номер ICQ, если он у Вас есть.
Домашняя страничка:
Откуда:
Введите место жительства (Страна, Область, Город).
Интересы:
Вы можете написать о ваших интересах
Подпись:
Введите Вашу подпись, не используйте HTML
Аватар:
"; if (!is_file("avatars/$rdt[12]")) 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']=="massmail") { /* echo'
Метка кому отправлять Имя Емайл Тем Сообщений Репутация Статус / Изменить
'; */ print"


Введите параметры текста отправляемого пользователю
  Имя отправителя:* и E-mail:*
Получатель:   НИК:* и E-mail:*"; echo'
  Сообщение:*


* Используйте макроподстановку:
  • %name - имя участника форума;
  • %fname - название форума;
  • %furl - URL-адрес форума;
  • %furllogin - URL-адрес страницы входа;
  • '; }} ?>
    Powered by WR-Forum Professional © 1.9.9