Файл: forum/index.php
Строк: 1483
<? // WR-forum v 1.9.3 // 10.06.10 г. // Miha-ingener@yandex.ru
error_reporting (E_ALL); // ВРЕМЕННО - на время тестирования и отладки скрипта!
// error_reporting(0); // РАЗКОМЕНТИРУЙТЕ для постоянной работы!!!
@ini_set('register_globals','off');// Все скрипты написаны для этой настройки php
include "config.php";
$stop=0; // ОТКЛЮЧИТЬ добавление сообщений
$antimat=0; // включить АНТИМАТ да/нет - 1/0
$repaaddfile=5; // Сколько очков репутации добавлять при загрузке файла?
$repaaddmsg=1; // Сколько очков репутации добавлять за добавление сообщения?
$repaaddtem=1; // Сколько очков репутации добавлять за добавлении темы?
$random_name=TRUE; // При загрузке файла генерировать ему имя случайным образом?
$valid_types=array("zip","rar","7z","jpg","jpeg","bmp","gif","png"); // допустимые расширения загружаемых файлов
function replacer ($text) { // ФУНКЦИЯ очистки кода
$text=str_replace(" ",' ',$text);
$text=str_replace(">",'>',$text);
$text=str_replace("<",'<',$text);
$text=str_replace(""",'"',$text);
$text=preg_replace("/nn/",'<p>',$text);
$text=preg_replace("/n/",'<br>',$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("rn","<br> ",$text);
$text=str_replace("nn",'<p> ',$text);
$text=str_replace("n",'<br> ',$text);
$text=str_replace("t",'',$text);
$text=str_replace("r",'',$text);
$text=str_replace(' ',' ',$text);
return $text; }
// Функция содержит ПРОДОЛЖЕНИЕ ШАПКИ. Вызывается: addtop();
function addtop() { global $wrfname,$fskin,$date,$time;
// ищем КУКи и выводим ИМЯ
if (isset($_COOKIE['wrfcookies'])) {$wrfc=$_COOKIE['wrfcookies']; $wrfc=replacer($wrfc); $wrfc=explode("|", $wrfc); $wrfname=$wrfc[0];} else {unset($wrfname); unset($wrfpass); $wrfpass="";}
print"<TD align=right>";
if (isset($wrfname)) {print "<a href='tools.php?event=profile&pname=$wrfname' class=mainmenu><img src="$fskin/icon_mini_profile.gif" border=0 hspace=3 />Ваш профиль</a> <a href='index.php?event=clearcooke' class=mainmenu><img src="$fskin/ico-login.gif" border=0 hspace=3 />Выход [<B>$wrfname</B>]</a>";}
else {print "<span class=mainmenu>
<a href='tools.php?event=reg' class=mainmenu><img src="$fskin/icon_mini_register.gif" border=0 hspace=3 />Регистрация</a>
<a href='tools.php?event=login' class=mainmenu> <img src="$fskin/buttons_spacer.gif" border=0 hspace=3>Вход</a></td>";}
if (is_file("$fskin/tiptop.html")) include("$fskin/tiptop.html"); // подключаем дополнение к ВЕРХУШКе
print"</span></td></tr></table></td></tr></table><a href=readme.html></a><a href=data/inst.php></a><span class=gensmall>Сегодня: $date - $time";
return true;}
function prcmp ($a, $b) {if ($a==$b) return 0; if ($a<$b) return -1; return 1;} // Функция сортировки
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 "<img src=antispam.php?image=$psnum border='0' alt=''>n";
$xkey=$xkey.$snum[$i];}
$xkey=md5("$xkey+$rand_key+$dopkod"); //число + ключ из config.php + код меняющийся кажые 24 часа
print" <input name='usernum' class=post type='text' style='WIDTH: 70px;' maxlength=$max_key size=6> (введите число, указанное на картинке)
<input name=xkey type=hidden value='$xkey'>
<input name=stime type=hidden value='$stime'>";
return; }
function addmsg($qm) { // ФУНКЦИЯ добавления темы/сообщения
global $wrfname,$maxname,$canupfile,$antispam,$max_key,$rand_key,$max_upfile_size,$smile,$smiles,$valid_types;
print'<tr><td class=row1 width=14% height=25><span class=gen><b>Имя</b></span></td>
<td class=row2 width=76%><span class=genmed>';
if (!isset($wrfname)) print "<input type=text name=name class=post maxlength=$maxname size=28> E-mail <input type=text name=email class=post size=30>";
else {
if (isset($_COOKIE['wrfcookies'])) {$wrfc=$_COOKIE['wrfcookies']; $wrfc=htmlspecialchars($wrfc); $wrfc=stripslashes($wrfc); $wrfc=explode("|", $wrfc); $wrfpass=replacer($wrfc[1]);} else {unset($wrfpass); $wrfpass="";}
print "<b>$wrfname</b><input type=hidden name=name value='$wrfname'><input type=hidden name=who value='да'><input type=hidden name=userpass value="$wrfpass">";}
print "</span></td></tr>
<tr><td class=row1 valign=top><span class=genmed><b>Сообщение</b><br><br>Для вставки имени, кликните на точку рядом с ним.<br><br>Смайлики:<br>
<table align=center width=100 height=70><tr><td valign=top>";
if ($smile==TRUE) {$i=count($smiles)-1;
for($k=0; $k<$i; $k=$k+2) {$j=$k+1; print"<A href='javascript:%20x()' onclick="DoSmilie(' $smiles[$j]');"><img src='smile/$smiles[$k].gif' border=0></a> ";} }
print"<A href='javascript:%20x()' onclick="DoSmilie('[RB] [/RB] ');"><font color=red><B>RB</b></font></a>
<a name='add' href='#add' onclick="window.open('tools.php?event=moresmiles','smiles','width=350,height=300,left=50,top=150,toolbar=0,status=0,border=0,scrollbars=1')">Ещё смайлы</a>
</tr></td></table></span></td>
<td class=row2 valign=top><span class=gen><table width=450><tr valign=middle><td><span class=genmed>
<input type=button class=button value='B' style='font-weight:bold; width:30px' onclick="DoSmilie(' [b] [/b] ');">
<input type=button class=button value='RB' style='font-weight:bold; width:30px; color:red' onclick="DoSmilie('[RB] [/RB]');">
<INPUT type=button class=button value='Цитировать выделенное' style='width: 180px' onclick='REPLIER.msg.value += "[Quote]"+(window.getSelection?window.getSelection():document.selection.createRange().text)+"[/Quote]"'>
<input type=button class=button value=' Код ' onclick="DoSmilie(' [Code] [/Code] ');">
<input type=button class=button value=' IMG ' style='font-weight:bold; color:navy' onclick="DoSmilie('[img][/img]');">
</span></td></tr><tr>
<td colspan=9><span class=gen><textarea name=msg cols=95 rows=10 class=post>$qm</textarea></span></td>";
if ($canupfile==TRUE and isset($wrfname)) { $max=round($max_upfile_size/10.24)/100;
print "<tr><td class=row1 valign=top>Добавление ";
foreach($valid_types as $v) print "<B>$v</B>, ";
print" максимально допустмый размер: <B>$max Кб.</B>
<input type=file name=file class=post size=70></td></tr></table></TD>";}
if ($antispam==TRUE and !isset($wrfname)) nospam(); // АНТИСПАМ !
echo'</tr></table></span></td></tr>
<tr><td class=row1 colspan=2 align=center height=28><input type=submit tabindex=5 class=mainoption value=" Отправить "> <input type=reset tabindex=6 class=mainoption value=" Очистить "></td>
</tr></table></form>';
return;} // КОНЕЦ функции-формы ДОБАВЛЕНИЯ ТЕМЫ/ОТВЕТА
// Выбран ВЫХОД из форума - очищаем куки
if(isset($_GET['event'])) {if ($_GET['event']=="clearcooke") {setcookie("wrfcookies","",time()); Header("Location: index.php"); exit;}}
// ДОБАВЛЕНИЕ ТЕМЫ или ОТВЕТА - ШАГ 1
if(isset($_GET['event'])) {
if ($stop==TRUE) exit("Временно добавление сообщений приостановлено!");
if (($_GET['event']=="addtopic") or ($_GET['event']=="addanswer")) {
if (isset($_POST['name'])) $name=$_POST['name'];
$name=trim($name); // Вырезает ПРОБЕЛьные символы
$zag=$_POST['zag']; $msg=$_POST['msg']; $fid=$_GET['fid'];
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'];
if ($_GET['event']=="addanswer") $id=$_POST['id'];
if (isset($_POST['maxzd'])) $maxzd=$_POST['maxzd']; else $maxzd="0"; if ($maxzd==null) $maxzd="0";
if ((!ctype_digit($maxzd)) or (strlen($maxzd)>2)) exit("<B>$back. Попытка взлома по звёздам или ошибка в файле статистики</B>");
// защита по топику fid
if (!ctype_digit($fid) or strlen($fid)>3) exit("<B>$back. Попытка взлома через номер рубрики. Номер должен содержать только цифры и быть менее 4 символов</B>");
//--А-Н-Т-И-С-П-А-М--проверка кода--
if ($antispam==TRUE and !isset($_COOKIE['wrfcookies'])) {
if (!isset($_POST['usernum']) or !isset($_POST['xkey']) or !isset($_POST['stime']) ) exit("данные из формы не поступили!");
$usernum=replacer($_POST['usernum']); $xkey=replacer($_POST['xkey']); $stime=replacer($_POST['stime']);
$dopkod=mktime(0,0,0,date("m"),date("d"),date("Y")); // доп.код. Меняется каждые 24 часа
$usertime=md5("$dopkod+$rand_key");// доп.код
$userkey=md5("$usernum+$rand_key+$dopkod");
if (($usertime!=$stime) or ($userkey!=$xkey)) exit("введён ОШИБОЧНЫЙ код!");}
// проходим по всем разделам и топикам - ищем запращиваемый
// на тот случай, если 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; $fotodetali=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]);
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) {if ($tc>=$dt[11]) exit("$back. Превышено ограничение на кол-во допустимых тем в данной рубрике! Не более <B>$dt[11]</B> тем!");}
// проверка Логина/Пароля юзера. Может он хакер, тогда облом ему
// Этап 1
$userpass=replacer($_POST['userpass']); // получаем и обрабатываем пароль юзера из файлов
$realname="";
if (isset($_COOKIE['wrfcookies'])) {
$wrfc=$_COOKIE['wrfcookies']; $wrfc=htmlspecialchars($wrfc); $wrfc=stripslashes($wrfc);
$wrfc=explode("|", $wrfc); $wrfname=$wrfc[0]; $wrfpass=$wrfc[1];
} else {$who=null; $wrfname=null; $wrfpass=null;}
// Этап 2
if ($who!=null) { $who=0;
if ($wrfname!=null & $wrfpass!=null) {
$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] & $userpass===$rdt[1]) {
$name=$wrfname; $who="да"; $ok="$i";}}
} while($i > "1");
if (!isset($ok)) {setcookie("wrfcookies","",time()); exit("Ошибка при работе с КУКИ! <font color=red><B>Вы не сможете оставить сообщение, попробуйте подать его как гость.</B></font> Ваш логин и пароль не найдены в базе данных, попробуйте зайти на форум вновь. Если ошибка повторяется - обратитесь к администратору форума.");}
}}
print"<html><head><link rel='stylesheet' href='$fskin/style.css' type='text/css'></head><body>";
if ($_GET['event']=="addtopic" and $cangutema==FALSE and !isset($wrfname)) exit("<center>Администратор запретил гостям создавать темы!</center><BR><BR>");
if ($_GET['event']=="addanswer" and $cangumsg==FALSE and !isset($wrfname)) exit("<center>Администратор запретил гостям отвечать в темах!</center><BR><BR>");
if (isset($_FILES['file']['name'])) { // ЕСЛИ ДОБАВЛЯЕМ ФАЙЛ
$fotoname=replacer($_FILES['file']['name']); if (strlen($fotoname)>3) { $fotosize=$_FILES['file']['size']; // Имя и размер файла
//---- ЗАЩИТЫ от ВЗЛОМА -----
// 1. Проверяем РАСШИРЕНИЕ
$ext = strtolower(substr($fotoname, 1 + strrpos($fotoname, ".")));
if (!in_array($ext, $valid_types)) {echo "<B>ФАЙЛ НЕ загружен.</B> Возможные причины:<BR>
- разрешена загрузка только файлов с такими расширениями: <B>";
$patern=""; foreach($valid_types as $v) print"$v, ";
print"</B><BR>
- Вы пытаетесь загрузить файл с двойным расширением;<BR>
- неверно введён адрес или выбран испорченный файл;</B><BR>"; exit;}
// 2. считаем КОЛ-ВО ТОЧЕК в выражении - если большей одной - СВОБОДЕН!
$findtchka=substr_count($fotoname, "."); if ($findtchka>1) exit("ТОЧКА встречается в имени файла $findtchka раз(а). Это ЗАПРЕЩЕНО! <BR>rn");
// 2. если в имени есть .php, .html, .htm - свободен!
$bago="Извините, но в имени ФАйла <B>запрещено</B> использовать .php, .html, .htm";
if (preg_match("/.php/i",$fotoname)) exit("Вхождение <B>.php</B> найдено. $bago");
if (preg_match("/.html/i",$fotoname)) exit("Вхождение <B>.html</B> найдено. $bago");
if (preg_match("/.htm/i",$fotoname)) exit("Вхождение <B>.htm</B> найдено. $bago");
// 3. защищаем от РУССКИХ букв в имени файла и проверка РАСШИРЕНИЯ файла
$patern=""; foreach($valid_types as $v) $patern.="$v|";
if (!preg_match("/^[a-z0-9.-_]+.(".$patern.")+$/is",$fotoname)) exit("$fotoname - <br>Запрещено использовать РУССКИЕ буквы в имени файла, а также запрещено загружать файлы с расширением отличным от заданных!!");
// 4. Проверяем, может быть файл с таким именем уже есть на сервере
if (file_exists("$filedir/$fotoname")) exit("<br><br>$back. Файл с таким именем уже существует на сервере! Либо измените имя на другое, <br>либо обновите страницу - возможно Вы пытаетесь добавить сообщение и файл повторно!!");
// Конец защит по имени файла
// 5. Размер файла
$fotoksize=round($fotosize/10.24)/100; // размер ЗАГРУЖАЕМОГО файла в Кб.
$fotomax=round($max_upfile_size/10.24)/100; // максимальный размер файла в Кб.
if ($fotoksize>$fotomax) exit("Вы превысили допустимый размер файла! <BR><B>Максимально допустимый</B> размер: <B>$fotomax </B>Кб.<BR> <B>Вы пытаетесь</B> загрузить файл размером: <B>$fotoksize</B> Кб!");
// ЕСЛИ включен порядок присвоения файлу случайного имени при загрузке - генерируем случайное имя
if ($random_name==TRUE) {do $key=mt_rand(100000,999999); while (file_exists("$filedir/$key.$ext")); $fotoname="$key.$ext";}
if (copy($_FILES['file']['tmp_name'], $filedir."/".$fotoname)) {print "<br><br>Файл УСПЕШНО загружен: $fotoname (Размер: $fotosize байт)"; $fotodetali="1|$fotoname|$fotosize|";}
else echo "ОШИБКА загрузки файла - $fotoname...n"; }}
$tektime=time();
$name=wordwrap($name,30,' ',1); // разрываем длинные строки
$zag=wordwrap($zag,50,' ',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.="..";}
// генерируем имя файлу с темой
if ($_GET['event']=="addtopic") { if ($fid<10) $add="0"; else $add="";
do $id=mt_rand(1000,9999); while (file_exists("$datadir/$add$fid$id.dat"));
$id="$add$fid$id"; }
if ((!ctype_digit($id)) or (strlen($id)>15)) exit("<B>$back. Номер темы должен быть числом. Критическая ошибка скрипта или попытка взлома</B>");
if (strlen(ltrim($zag))<3) exit("$back ! Ошибка в вводе данных заголовка!");
$text="$name|$who|$email|$zag|$msg|$date|$time|$id||$tektime|$smname|$smzag|$fotodetali|||||";
$text=replacer($text); $exd=explode("|",$text);
$name=$exd[0]; $zag=$exd[3]; $smname=$exd[10]; $smzag=$exd[11]; $smmsg=$exd[4];
if (!isset($name) || strlen($name) > $maxname || strlen($name) <1) exit("$back Ваше <B>Имя пустое, или превышает $maxname</B> символов!</B></center>");
if (preg_match("/[^(\w)|(\x7F-\xFF)|(\-)]/",$name)) exit("$back Ваше имя содержит запрещённые символы. Разрешены русские и английские буквы, цифры, подчёркивание и тире.");
if (strlen(ltrim($zag))<3 || strlen($zag) > $maxzag) exit("$back Слишком короткое название темы или <B>название превышает $maxzag</B> символов!</B></center>");
if (strlen(ltrim($msg))<2 || strlen($msg) > $maxmsg) exit("$back Ваше <B>сообщение короткое или превышает $maxmsg</B> символов.</B></center>");
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 адрес!</B></center>");
// функция АНТИФЛУД здесь - повторное добавление сообщения/темы запрещено!
if (isset($tlines)) {
if ($tc<"-1") {$sdt[0]=null; $sdt[3]=null;} else {$last=$tlines[$tc+1]; $sdt=explode("|",$last);}
if ($_GET['event'] =="addtopic") { // ЕСЛИ добавление ТЕМЫ: имя = имя в файле, тема = последняя тема в файле
if ($name==$sdt[0] and $exd[3]==$sdt[3]) exit("$back. Такая тема уже создана. Спамить на форуме запрещено!");
} else { // ЕСЛИ добавление сообщения: имя = имя в файле, сообщение = последнему сообщению в файле
if (is_file("$datadir/$id.dat")) {$linesn=file("$datadir/$id.dat"); $in=count($linesn)-1;
if ($in > 0) { $dtf=explode("|",$linesn[$in]);
if ($name==$dtf[0] and $exd[4]==$dtf[4]) exit("$back. Такое сообщение уже размещено в данной теме. Спамить на форуме запрещено!");}
}
}} // if $event=="addtopic"
// ЕСЛИ введена команда АП, то меняем дату создания файла и тема самая первая будет
if ($_GET['event'] =="addanswer") { //при ОТВЕТе В ТЕМЕ
// Проверяем, давно ли реактивировали тему
$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 "<script language='Javascript'>function reload() {location = "index.php?fid=$fid&id=$id&page=$page#m$in"}; setTimeout('reload()', 1500);</script>
<table width=100% height=80%><tr><td><table border=1 cellpadding=10 cellspacing=0 bordercolor=#224488 align=center valign=center width=60%><tr><td><center>
Спасибо, <B>$name</B>, тема реактивирована.<BR><BR>Через несколько секунд Вы будете автоматически перемещены в текущую тему <BR><B>$zag</B>.<BR><BR>
<B><a href='index.php?fid=$fid&id=$id&page=$page#m$in'>Нажмите здесь, если не хотите больше ждать</a></B></td></tr></table></td></tr></table></center></body></html>";
exit; }
if ($timer<10 and $timer>0) exit("$back тема была активна менее $timer секунд назад.");
}
$razdelname="";
if ($realbase==TRUE and $maxzd<1) { // Если подключена рабочая база, а не копия
$lines=file("$datadir/mainforum.dat"); $max=sizeof($lines)-1;
$dt=explode("|", $lines[$realfid]); $dt[5]++;
if ($_GET['event']=="addtopic") $dt[4]++;
$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<=$max;$i++) {if ($i==$realfid) fputs($fp,"$txtdatrn"); else fputs($fp,$lines[$i]);}
fflush ($fp);
flock ($fp,LOCK_UN);
fclose($fp);
} // if ($realbase==TRUE)
if ($newmess==TRUE 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="";
$ntext="$fid|$id|$date|$time|$smname|$zag|$msg|$nlines|$nlines2|$razdelname|$who||||";
$ntext=str_replace("
", "<br>", $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,"$newlineexitrn");
fflush ($fp);
flock ($fp,LOCK_UN);
fclose($fp);
} else {
$fp=fopen("$newmessfile","a+");
flock ($fp,LOCK_EX);
fputs($fp,"$ntextrn");
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==TRUE)
// БЛОК добавляет +1 к репе и +1 к сообщению или +1 к кол-ву тем, созданных юзером
if (isset($_COOKIE['wrfcookies']) and (isset($ok))) {
$ufile="$datadir/userstat.dat"; $ulines=file("$ufile"); $ui=count($ulines)-1; $ulinenew=""; $fileadd=0;
// Если юзер загружает файл - то ему ещё +5 в РЕПУ
if (isset($_FILES['file']['name']) and $repaaddfile!=FALSE) {if (strlen($_FILES['file']['name'])>1) $fileadd=$repaaddfile;}
// Ищем юзера по имени в файле userstat.dat
for ($i=0;$i<=$ui;$i++) {$udt=explode("|",$ulines[$i]);
if ($udt[0]==$wrfname) {
$udt[3]=$udt[3]+$repaaddmsg+$fileadd;
$udt[2]=$udt[2]+$repaaddtem; if ($_GET['event']=="addtopic") $udt[1]++;
$ulines[$i]="$udt[0]|$udt[1]|$udt[2]|$udt[3]|$udt[4]|$udt[5]||||rn";}
$ulinenew.="$ulines[$i]";}
// Пишем данные в файл
$fp=fopen("$ufile","w");
flock ($fp,LOCK_EX);
fputs($fp,"$ulinenew");
fflush ($fp);
flock ($fp,LOCK_UN);
fclose($fp); }
if ($_GET['event'] =="addtopic") { // Добавление ТЕМЫ - запись данных
// Пишем В ТОПИК
$fp=fopen("$datadir/topic$fid.dat","a+");
flock ($fp,LOCK_EX);
fputs($fp,"$textrn");
fflush ($fp);
flock ($fp,LOCK_UN);
fclose($fp);
// Пишем В ТЕМУ
$fp=fopen("$datadir/$id.dat","a+");
flock ($fp,LOCK_EX);
fputs($fp,"$textrn");
fflush ($fp);
flock ($fp,LOCK_UN);
fclose($fp);
print "<script language='Javascript'>function reload() {location = "index.php?fid=$fid&id=$id"}; setTimeout('reload()', 1500);</script>
<table width=100% height=80%><tr><td><table border=1 cellpadding=10 cellspacing=0 bordercolor=#224488 align=center valign=center width=60%><tr><td><center>
Спасибо, <B>$name</B>, за добавление темы!<BR><BR>Через несколько секунд Вы будете автоматически перемещены в созданную тему.<BR><BR>
<B><a href='index.php?fid=$fid&id=$id'>Нажмите здесь, если не хотите больше ждать</a></B></td></tr></table></td></tr></table></center></body></html>";
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,"$textrn");
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 "<script language='Javascript'>function reload() {location = "index.php?fid=$fid&id=$id&page=$page#m$in"}; setTimeout('reload()', 1500);</script>
<table width=100% height=80%><tr><td><table border=1 cellpadding=10 cellspacing=0 bordercolor=#224488 align=center valign=center width=60%><tr><td><center>
Спасибо, <B>$name</B>, Ваш ответ успешно добавлен.<BR><BR>Через несколько секунд Вы будете автоматически перемещены в текущую тему <BR><B>$zag</B>.<BR><BR>
<B><a href='index.php?fid=$fid&id=$id&page=$page#m$in'>Нажмите здесь, если не хотите больше ждать</a></B></td></tr></table></td></tr></table></center></body></html>";
exit;
}
}
//--------------- ШАПКА для всех страниц форума ------------//
// определяем дату последнего визита. +5 минут погрешности //
if (isset($_COOKIE['wrfcookies'])) {
$wrfc=$_COOKIE['wrfcookies']; $wrfc=explode("|",replacer($wrfc));
$wrfname=$wrfc[0];$wrfpass=$wrfc[1];$wrftime1=$wrfc[2];$wrftime2=$wrfc[3];
if (time()>($wrftime1+240)) {
$tektime=time(); $wrfcookies="$wrfc[0]|$wrfc[1]|$tektime|$wrftime1|";
setcookie("wrfcookies", $wrfcookies, time()+1728000);
$wrfc=$_COOKIE['wrfcookies']; $wrfc=explode("|",replacer($wrfc));
$wrfname=$wrfc[0];$wrfpass=$wrfc[1];$wrftime1=$wrfc[2];$wrftime2=$wrfc[3];
} }
// ------------
if (!isset($_GET['event'])) {
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("<center><b>Файл РУБРИК несуществует! Зайдите в <a href='admin.php'>админку</a> и создайте рубрики!</b>");
// Блок выводит в статусной строке: ТЕМА -> РАЗДЕЛ -> ФОРУМ
$raz=""; $frname="";$rfid="";
if (isset($_GET['fid']) or isset($_GET['razdel'])) {
if (isset($_GET['fid'])) $fid=$_GET['fid']; else $fid=$_GET['razdel'];
if (!ctype_digit($fid) or strlen($fid)>3) exit("<B>$back. Индекс темы должен содержать цифры, их кол-во менее 4 символов</B>");
$imax=count($mainlines); if (($fid>999) or (strlen($fid)==0)) exit(" <b>Максимальное кол-во разделов - 999. Данный раздел удалён или не существует.</b>");
$i=count($mainlines);
// проходим по всем разделам и топикам - ищем запращиваемый
do {$i--; $dt=explode("|", $mainlines[$i]);
if ($dt[0]==$fid) {$rfid=$i;
if (isset($_GET['razdel'])) {$raz="$dt[2]"; $frname="$dt[2]";} else {$raz="$dt[1]"; $frname="$dt[1]";}
if (isset($dt[11])) { if($dt[11]>0) $maxtem=$dt[11]; else $maxtem="999";}}
} while($i >0);
if (isset($_GET['id'])) { $id=$_GET['id'];
if (!ctype_digit($id) or strlen($id)>15) exit("<B>$back. Ключ темы должен содержать менее 15 цифр!</B>");
if (is_file("$datadir/$id.dat")) { $lines=file("$datadir/$id.dat");
if (count($lines)>4) {$dtt=explode("|",$lines[0]); $frtname=$dtt[3];} else $frtname="";
$ft=$frname; $frname="-> $ft ->";} else {$frtname=""; $frname="";}} else {$frtname=""; $frname.="->";} } else {$frname=""; $frtname="";}
include("$fskin/top.html"); addtop(); // подключаем ШАПКУ форума
// выводим ГЛАВНУЮ СТРАНИЦУ ФОРУМА
if (is_file("$datadir/usersdat.php")) { // считываем имя последнего зарегистрировавшегося
$userlines=file("$datadir/usersdat.php"); $dayx="";
$usercount=count($userlines); $ui=$usercount-1; $uu=$ui;
$tdt=explode("|", $userlines[$ui]);} else { $fp=fopen("$datadir/usersdat.php","a+"); fputs($fp,"<?die;?>rn"); fflush ($fp); fclose($fp); $ui=""; $tdt[0]="";}
$today=mktime();
if (!isset($_GET['fid'])) {
echo ('<table><tr><td><span class=nav> <a href=index.php class=nav>'.$fname.'</a> ->'.$raz.' </span></td></tr></table>
<table width=100% cellpadding=2 cellspacing=1 class=forumline>
<tr>
<th width=62% colspan=2 class=thCornerL height=25>Форумы</th>
<th width=7% class=thTop>Тем</th>
<th width=7% class=thCornerR>Ответов</th>
<th width=28% class=thCornerR nowrap=nowrap>Обновление</th>
</tr>');
// Выводим все РУБРИКИ НА ГЛАВНОЙ
$adminmsg=""; if (is_file("$datadir/mainforum.dat")) $lines=file("$datadir/mainforum.dat");
if (!isset($lines)) $datasize=0; else $datasize=sizeof($lines);
if ($datasize<=0) {if (is_file("$datadir/copy.dat")) {$lines=file("$datadir/copy.dat"); $datasize=sizeof($lines);} $adminmsg="<font color=red><B>Администратор, внимание!!!</B> Файл БД с рубриками повреждён. Восстановите его из резервной копии в админке!</font><br>";}
if ($datasize<=0) exit("Проблемы с Базой данных - обратитесь к администратору");
$i=count($lines); $n="0"; $a1=$rfid-1; $u=$i-1; $fid="0"; $itogotem="0"; $itogomsg="0"; $alt=""; $konec="";
do {$a1++; $dt=explode("|", $lines[$a1]);
if (isset($dt[1])) { // Если строчка потерялась в скрипте (пустая строка) - то просто её НЕ выводим
if ($dt[1]=="razdel" and isset($_GET['razdel'])) $konec++; else {
// определяем тип: топик или заголовок
if ($dt[1]=="razdel") {print "<tr height=28><td class=catLeft colspan=2><span class=cattitle><center><a href='index.php?razdel=$dt[0]'>$dt[2]</a></td><td class=rowpic colspan=4 align=right> </td></tr>";}
else {
//$dt[9] - дата размещения сообщения; $wrftime2 - последнее посещение
// Если $dt[9] раньше (т.е. больше) $wrftime2 значит раздел форума - новый
$foldicon="folder.gif"; if (isset($wrfname)) {if (isset($dt[9])) {if ($dt[9]>$wrftime2) $foldicon="foldernew.gif";}}
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 $page=1;
if ($dt[7]==$date) $dt[7]="сегодня";
$maxzvezd=null; if (isset($dt[12])) { if ($dt[12]>=1) {$maxzvezd="*Доступна участникам, имеющим <font color=red><B>$dt[12]</B> звезд";
$dt[4]=""; $dt[5]="";
if ($dt[12]==1) $maxzvezd.="у";
if ($dt[12]==2 or $dt[12]==3 or $dt[12]==4) $maxzvezd.="ы";
$maxzvezd.=" минимум</font>";}}
$fid="$dt[0]";
// ФИШКА: если есть файлы типа main-FID.gif, где FID - число, то вместо обычных фолдерозаглушек, ставим этот файл
if (is_file("$fskin/main-$fid.gif")) {$foldicon="main-$fid.gif"; $alt="$dt[1]";} else $alt="";
$dt[8]=substr($dt[8],0,-3);
$dt[10]=replacer($dt[10]);
print "<tr align=center valign=middle height=50>
<td width=3% class=row1><img src="$fskin/$foldicon" alt='$alt' border=0></td>
<td width=60% class=row1 align=left><span class=forumlink><a href="index.php?fid=$fid">$dt[1]</a> $maxzvezd<BR></span><small>$dt[2]</small></td>
<td class=row2><small>$dt[4]</small></td>
<td class=row2><small>$dt[5]</small></td>
<td class=row2 align=left><span class=gensmall>тема: "; if (strlen($dt[10])>0) print "<a href="index.php?fid=$fid&id=$dt[3]&page=$page#m$msgsize" title='$dt[10]'>$dt[10]</a>"; print"<BR>автор: <B>$dt[6]</B><BR>дата: <B>$dt[7]</B> - $dt[8]</span></td></tr>rrn";
$itogotem=$itogotem+$dt[4];$itogomsg=$itogomsg+$dt[5]; }} if ($konec==2) $a1=$u;
} // if isset($dt[1]
} while($a1 < $u);
echo('</table><BR>');
// БЫСТРЫЙ ПЕРЕХОД к теме
echo '<table width=100% cellpadding=3 cellspacing=1 class=forumline><TR><TD class=catHead><span class=cattitle>Навигация</span></td></tr>
<tr><td class=row1 align=right><span class=gensmall>
Быстрый переход по рубрикам <select onchange="window.location=('index.php?fid='+this.options[this.selectedIndex].value)">
<option>Выберите рубрику</option>';
$ii=count($mainlines); $cn=0; $i=0;
do {$dt=explode("|", $mainlines[$i]);
if ($dt[1]=="razdel") {if ($cn!=0) {echo'</optgroup>'; $cn=0;} $cn++; print"<optgroup label='$dt[2]'>";} else {print" <option value='$dt[0]'>|-$dt[1]</option>";}
$i++;} while($i<$ii);
echo'</optgroup></select></TD></TR></TABLE><br>';
if ($statistika==TRUE and !isset($_GET['razdel'])) { // СТАТИСТИКА ИТОГО ТЕМ/СООБЩЕНИЙ/ПРАВА ЮЗЕРОВ
if ($cangutema==TRUE) $c1="разрешено"; else $c1="запрещено";
if ($cangumsg ==TRUE) $c2="разрешено"; else $c2="запрещено";
$codename=urlencode($tdt[0]);
print"<table width=100% cellpadding=3 cellspacing=1 class=forumline><tr><td class=catHead colspan=2 height=28><span class=cattitle>Статистика</span></td></tr><tr>
<td class=row1 align=center valign=middle rowspan=2><img src="$fskin/whosonline.gif"></td>
<td class=row1 align=left width=95%><span class=gensmall>
Сообщений: <b>$itogomsg</b><br>Тем: <b>$itogotem</b><br>Всего зарегистрировано участников: <b>";
if (!isset($wrfname)) print"$ui"; else print"<a href="tools.php?event=who">$ui</a>";
print"</b><br>Последним зарегистрировался: <B>";
if (!isset($wrfname)) print"$tdt[0]"; else print"<a href="tools.php?event=profile&pname=$codename">$tdt[0]</a>";
print"</B><BR> Гостям <B>$c1</B> создавать темы и <B>$c2</B> отвечать в темах<BR>
$adminmsg
</span></td></tr></table>";
// СТАТИСТИКА -=ДНИ РОЖДЕНИЯ=-
if (is_file("$datadir/usersdat.php")) { // считываем всех юзеров, ищем дни варения
$userlines=file("$datadir/usersdat.php");
$usercount=count($userlines); $ui=$usercount-1; $t_people=""; $z_people=""; $s_people=""; $p_people=""; $s_p="0";
do {$udt=explode("|",$userlines[$ui]);
if (isset($udt[1])) {
$udt[5]=substr("$udt[5]",0, 10); // обрезаем дату рождения по формату
if (preg_match("(d{2}.d{2}.d{4})",$udt[5])) { // соответствует шаблону ДД.ММ.ГГГГ
$bday=substr("$udt[5]",0,-5);
$dmtoday=date("d.m");
$todaydt=explode(".",$dmtoday);
$codename=urlencode($udt[0]);
// собираем для МЕГОДНЯШНИХ
if ($bday==$dmtoday) $t_people.="<a href='tools.php?event=profile&pname=$codename'>$udt[0]</a>, ";
$dt=explode(".",$udt[5]);
if ($dt[1]==12) $year=1972; else $year=1973; // для того, чтобы верно считать с декабря по январь
$newdate=mktime(0,0,0,$dt[1],$dt[0],$year); // для дня рождения
$tekdt=mktime(0,0,0,$todaydt[1],$todaydt[0],$year); // текущую дату переводим в этот формат
$deystodate=round(($newdate-$tekdt)/86400); // через сколько дней наступит событие
// собираем для ВЧЕРАШНИХ
if ($deystodate=="-1") $z_people.="<a href='tools.php?event=profile&pname=$codename'>$udt[0]</a>, ";
// собираем ПРИБЛИЖАЮЩИХСЯ в массив (БОЛЬШЕ 1 и МЕНЬШЕ 7 дней)
if ($deystodate>1 and $deystodate<7) {if ($deystodate<10) $deystodate="0$deystodate"; $s_peo[$s_p]="$deystodate|$udt[0]|"; $s_p++;}
} // if указан день варения в переменной $udt[5]
} // if iiset($udt[1])
$ui--; } while ($ui>0);
if (isset($s_peo)) {
usort($s_peo,"prcmp"); // сортируем дни по возрастанию
$i=0; do {$sdt=explode("|",$s_peo[$i]);
$sdt[0]=intval($sdt[0]); // преобразуем строку в число, чтобы отбросить 0 в начале
$codename=urlencode($sdt[1]);
$s_people.="<b><a href='tools.php?event=profile&pname=$codename'>$sdt[1]</a></b> ($sdt[0] дн.), "; $i++;
} while ($i<$s_p); }
// На тот случай, если дней рождения нет, делаем заглушки
if (strlen($z_people)>1) $z_people="<span class=gensmall><br>Вчера:<B>$z_people</B><font color=#800040> поздравляем с Днём варения!</font><br>";
if (strlen($t_people)>1) $t_people="<span class=gensmall><br>Сегодня: <B>$t_people</B><font color=red>искренне поздравляю!</font><br>";
if (strlen($s_people)>1) $s_people="<span class=gensmall><br>Скоро: $s_people <font color=#55002B>совсем скоро день варения!</font><br>";
if (strlen($z_people)>1 or strlen($t_people)>1 or strlen($s_people)>1){
print"<br><table width=100% cellpadding=3 cellspacing=1 class=forumline>
<tr><td class=catHead colspan=2 height=28><span class=cattitle>Дни рождения</span></td></tr><tr>
<td class=row1 align=center valign=middle rowspan=2><img src="$fskin/whosonline.gif"></td>
<td class=row1 align=left width=95%>
$z_people $t_people $s_people<br>
</span></td></tr></table>";}
} // КОНЕЦ БЛОКА ДНИ РОЖДЕНИЯ
// СТАТИСТИКА -= Последние сообщения с форума =-
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('<br><table width=100% cellpadding=3 cellspacing=1 class=forumline>
<tr><td class=catHead colspan=2 height=28><span class=cattitle>Последние сообщения</span></td></tr><tr>
<td class=row1 align=center valign=middle rowspan=2><img src="'.$fskin.'/whosonline.gif"></td>
<td class=row1 align=left width=95%><span class=gensmall>');
$a1=$i-1;$u="-1"; // выводим данные по возрастанию или убыванию
do {$dt=explode("|",$lines[$a1]); $a1--;
if (isset($dt[1])) { // Если строчка потерялась в скрипте (пустая строка) - то просто её НЕ выводим
$msg=htmlspecialchars($dt[6]);
$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("<br>","rn", $msg);
$msg=str_replace("<br><br>","rn", $msg);
$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]); if (!isset($wrfname)) $name="$dt[4]"; else $name="<B><a href='tools.php?event=profile&pname=$codename'>$dt[4]</a></B>";} else {$name="гость $dt[4]";}
print"$dt[2] - $dt[3]: <B><a href='index.php?fid=$dt[0]'>$dt[9]</a></B> -> <B><a href='index.php?fid=$dt[0]&id=$dt[1]&page=$page#m$dt[8]' title='$msg rnrn Отправлено $dt[3], $dt[2] г.'>$dt[5]</a></B> - $name.<br>";
} // если строчка потерялась
$a11=$u; $u11=$a1;
} while($a11 < $u11);
echo'</span></td></tr></table>';}
} // Конец блока последних сообщений
} // конец if (statistika==TRUE)
if (is_file("$fskin/bottom.html")) include("$fskin/bottom.html"); // подключаем НИЖНИЙ БЛОК форума
} // конец главной страницы
// страница С ТЕМАМИ выбранной РУБРИКИ
if (isset($_GET['fid']) and !isset($_GET['id'])) { $fid=$_GET['fid'];
// Защиты
if (!ctype_digit($fid) or strlen($fid)>3) exit("<B>$back. Номер рубрики должен быть цифровым и содержать менее 4 символов</B>");
$imax=count($mainlines); if (($fid>99) or (strlen($fid)==0)) exit("<b>Данный раздел удалён или не существует.</b>");
// Исключаем ошибку вызова несуществующей страницы
if (!isset($_GET['page'])) $page=1; else {$page=$_GET['page']; if (!ctype_digit($page)) $page=1; if ($page<1) $page=1;}
if ($raz!="razdel") {
// Уточняем статус по кол-ву ЗВЁЗД юзера. Если меньше допустимых N в этой рубрике - то досвиданья!
$maxzd=null;
do {$imax--; $ddt=explode("|", $mainlines[$imax]); if ($ddt[0]==$fid) $maxzd=$ddt[12]; } while($imax>"0");
if ($maxzd>=1) {
if (!ctype_digit($maxzd)) exit("$back звёзды исчисляются в цифрах. а в файле данных - ерунда!");
$noacsess="<br><br><br><br><table class=forumline align=center width=700><tr><th class=thHead colspan=4 height=25>Доступ в раздел ограничен</th></tr>
<tr class=row2><td class=row1><center><BR><BR><B><span style='FONT-SIZE: 14px'>Для просмотра данного раздела необходимо быть зарегистрированным и иметь рейтинг не менее $maxzd звёзд.";
// БЛОК проверяет логин и пароль юзера, считывает кол-во его звёзд и сравнивает с заданным в рубрике
if (isset($_COOKIE['wrfcookies'])) { // весь блок работает при наличии КУКИ
$text=$_COOKIE['wrfcookies'];
$text=replacer($text);
$wrfc=explode("|",$text); $wrfname=$wrfc[0]; if (isset($wrfc[1])) $wrfpass=$wrfc[1]; else exit("$back попытка взлома - в куки нет пароля. Куда он делся ;-) ?");
// пробегаем файл с юзерами
$iu=$usercount; $ok=null;
do {$iu--; $du=explode("|",$userlines[$iu]);
if (isset($du[1])) { $realname=strtolower($du[0]);
if (strtolower($wrfname)===$realname & $wrfpass===$du[1]) {$ok="$i"; if ($du[2]<$maxzd) exit("$noacsess У Вас всего $du[2] звёзд.</B></center><BR><BR>$back<BR><BR></td></table><br>"); }}
} while($iu > "0");
} else exit("$noacsess</B></center><BR><BR>$back<BR><BR></td></table><br>"); // если юзер тот, за кого себя выдаёт то его пускаем, иначе - обломаем
if (!isset($ok)) exit("$noacsess</B></center><BR><BR>$back<BR><BR></td></table><br>");
}
print"
<table><tr><td><span class=nav> <a href=index.php class=nav>$fname</a> -> <a href=index.php?fid=$fid class=nav>$frname</a></span></td></tr></table>
<table width=100% cellpadding=2 cellspacing=1 class=forumline><tr>
<th width=60% colspan=2 class=thCornerL height=25>Тема</th>
<th width=10% class=thTop nowrap=nowrap>Cообщений</th>
<th width=12% class=thCornerR nowrap=nowrap>Автор</th>
<th width=18% class=thCornerR>Обновления</th>
</tr>";
if ($stop!=TRUE) $addbutton="<table width=100%><tr><td align=left valign=middle><span class=nav><a name='add' href="index.php?fid=$fid&newtema=add#add"><img src='$fskin/newthread.gif' border=0></a> </span></td>";
else $addbutton="Извините за неудобство, но временно приостановлено добавление сообщений!";
// определяем есть ли информация в файле с данными
if (is_file("$datadir/topic$fid.dat")) {
$msglines=file("$datadir/topic$fid.dat"); $maxi=count($msglines); $i=$maxi;
if ($maxi>0) {
if ($maxi>$maxtem-1) $addbutton="<table width=100%><TR><TD>Количество допустимых тем в рубрике исчерпано.";
// БЛОК СОРТИРОВКИ: последние ответы ВВЕРХУ (по времени создания файла с темой)!
do {$i--; $dt=explode("|", $msglines[$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 - массив с данными: ДАТА | ИМЯ_ФАЙЛА_С_ТЕМОЙ | № п/п |
// $msglines - массив со всеми темами выбранной рубрики
$i=$maxi;
do {$i--; $dtn=explode("|", $newlines[$i]);
$numtp="$dtn[2]"; $lines[$i]="$msglines[$numtp]";
} while($i > 0);
// КОНЕЦ блока сортировки
// Показываем QQ ТЕМ
$fm=$maxi-$qq*($page-1);
if ($fm<"0") $fm=$qq; $lm=$fm-$qq; if ($lm<"0") $lm="0";
do {$fm--; $num=$fm+2;
$dt=explode("|", $lines[$fm]);
// нужно для определения темы на VIP-статус
$dtn=explode("|", $newlines[$fm]);
$timer=time()-$dtn[0]; // узнаем сколько прошло времени (в секундах)
$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 "<tr height=50 align=center valign=middle>
<td width=3% class=row1><img src="$fskin/$foldicon" border=0></td>
<td class=row1 align=left><span class=forumlink><b>";
if ($timer<0) echo'<font color=red>VIP </font>';
$dt[3]=replacer($dt[3]);
print"<a href="index.php?fid=$fid&id=$dt[7]" title='$dt[3]'>$dt[3]</a></B>";
if ($msgsize>$qq) { // ВЫВОДИМ СПИСОК ДОСТУПНЫХ СТРАНИЦ ТЕМЫ
$maxpaget=ceil($msgsize/$qq); $addpage="";
echo'</b></span><small> <div style="padding:6px;" class=pgbutt>Страницы: ';
if ($maxpaget<=5) $f1=$maxpaget; else $f1=5;
for($i=1; $i<=$f1; $i++) {if ($i!=1) $addpage="&page=$i"; print"<a href=index.php?fid=$fid&id=$dt[7]$addpage>$i</a> ";}
if ($maxpaget>5) print "... <a href=index.php?fid=$fid&id=$dt[7]&page=$maxpaget>$maxpaget</a>";
echo''; }
print"</div></td><td class=row2>$msgsize</td><td class=row2><span class=gensmall>";
$codename=urlencode($dt[0]);
if ($dt[1]=="да") {
if (!isset($wrfname)) print "$dt[0]"; else print "<a href='tools.php?event=profile&pname=$codename':$dt[2]>$dt[0]</a>";
print"<BR><small>$users</small>"; } else print"$dt[0]<BR><small>$guest</small>";
// защита 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];}}
$dt[6]=substr($dt[6],0,-3);
if ($dt[5]===$date) $dt[5]="<B>сегодня</B>";
print "</span></td>
<td class=row2 align=left><span class=gensmall>автор: $dt[0]<BR>дата/время: $dt[5] в $dt[6]</span></td>
</tr>rrn";
} //if is_file
} while($lm < $fm);
// формируем переменную $pageinfo - со СПИСКОМ СТРАНИЦ
$pageinfo=""; $addpage=""; $maxpage=ceil(($maxi+1)/$qq); if ($page>$maxpage) $page=$maxpage;
$pageinfo.="<div style='padding:6px;' class=pgbutt>Страницы: ";
if ($page>3 and $maxpage>5) $pageinfo.="<a href=index.php?fid=$fid>1</a> ... ";
$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.="<B>$i</B> ";
else {if ($i!=1) $addpage="&page=$i"; $pageinfo.="<a href=index.php?fid=$fid$addpage>$i</a> ";} }
if ($page<=$maxpage-3 and $maxpage>5) $pageinfo.="... <a href=index.php?fid=$fid&page=$maxpage>$maxpage</a>";
$pageinfo.='</div>';
print"
$addbutton<TD><table width=100%><tr><td align=right colspan=3>
$pageinfo</b></span></td></tr></table>";
} else print"$addbutton";
} else print"$addbutton";
echo'</tr></table><BR>';
if (isset($_GET['newtema'])) { if ($cangutema=="0" and !isset($wrfname)) print"<center><h5>Администратор запретил создавать гостям темы! Для регистрации пройдите по ссылке: <B><a href='tools.php?event=reg'>зарегистрироваться</a></B></h5></center><BR><BR>"; else {
$maxzag=$maxzag-10; // так нужно!!!
print"<form action="index.php?event=addtopic&fid=$fid" method=post enctype="multipart/form-data" name=REPLIER><table width=100% class=forumline><tr><td class=catHead colspan=2 height=28><span class=cattitle>Добавление темы</span></td></tr>
<tr><td class=row1 align=right valign=top>Заголовок темы</TD><TD class=row2>
<input type=hidden name=maxzd value='$maxzd'><input type=text class=post name=zag maxlength=$maxzag size=70>
</TD></TR>";
addmsg(""); } }
// БЫСТРЫЙ ПЕРЕХОД к теме
echo '<br><table width=100% cellpadding=3 cellspacing=1 class=forumline><TR><TD class=catHead><span class=cattitle>Навигация</span></td></tr>
<tr><td class=row1 align=right><span class=gensmall>
Быстрый переход по темам <select onchange="window.location=('index.php?fid='.$fid.'&id='+this.options[this.selectedIndex].value)">
<option>Выберите тему</option>';
$ii=$maxi; $cn=0; $i=0;
do {$dt=explode("|", $lines[$i]); print" <option value='$dt[7]'>$dt[3]</option>"; $i++;} while($i<$ii);
echo'</optgroup></select></TD></TR></TABLE>';
}
} //if ($raz!="razdel")
} // Если есть Fid, но нету id
if (isset($_GET['fid']) and isset($_GET['id'])) {$id=replacer($_GET['id']); $fid=replacer($_GET['fid']);
// определяем есть ли информация в файле с данными
if (!is_file("$datadir/$id.dat")) exit("<BR>$back. Извините, но такой темы на форуме не существует.<BR> Скорее всего её удалил администратор.");
$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 - проверяем не закрыта ли тема? и сразу же ищем есть ли в топике
$ok=FALSE; $closed=FALSE; if (is_file("$datadir/topic$fid.dat")) {
$msglines=file("$datadir/topic$fid.dat"); $mg=count($msglines);
do {$mg--; $mt=explode("|",$msglines[$mg]);
if ($mt[7]==$id and $mt[8]=="closed") $closed=TRUE;
if ($mt[7]==$id) $ok=1; // тема есть в указанном разделе?
} while($mg > "0");}
$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);
// Уточняем статус по кол-ву ЗВЁЗД юзера. Если меньше допустимых N в этой рубрике - то досвиданья!
$maxzd=null;
do {$imax--; $ddt=explode("|",$mainlines[$imax]); if ($ddt[0]==$fid) $maxzd=$ddt[12]; } while($imax>"0");
if ($maxzd>=1) {
if (!ctype_digit($maxzd)) exit("$back звёзды исчисляются в цифрах. а в файле данных - ерунда!");
$noacsess="<br><br><br><br><table class=forumline align=center width=700><tr><th class=thHead colspan=4 height=25>Доступ в раздел ограничен</th></tr>
<tr class=row2><td class=row1><center><BR><BR><B><span style='FONT-SIZE: 14px'>Для просмотра данного раздела необходимо быть зарегитстрированным и иметь рейтинг не менее $maxzd звёзд.";
if ($ok==FALSE) exit("<br><br>$back. Номер раздела указан ошибочно!<br> В указаном разделе нет такой темы!");
// БЛОК проверяет логин и пароль юзера, считывает кол-во его звёзд и сравнивает с заданным в рубрике
if (isset($_COOKIE['wrfcookies'])) { // весь блок работает при наличии КУКИ
$text=$_COOKIE['wrfcookies'];
$text=replacer($text);
$wrfc=explode("|",$text); $wrfname=$wrfc[0]; if (isset($wrfc[1])) $wrfpass=$wrfc[1]; else exit("$back попытка взлома - в куки нет пароля. Куда он делся ;-) ?");
// пробегаем файл с юзерами и считываем его в память
$iu=$usercount; $ok=null;
do {$iu--; $du=explode("|",$userlines[$iu]);
if (isset($du[1])) { $realname=strtolower($du[0]);
if (strtolower($wrfname)===$realname & $wrfpass===$du[1]) {$ok="$i"; if ($du[2]<$maxzd) exit("$noacsess У Вас всего $du[2] звёзд.</B></center><BR><BR>$back<BR><BR></td></table><br>"); }}
} while($iu > "0");
} else exit("$noacsess</B></center><BR><BR>$back<BR><BR></td></table><br>"); // если юзер тот, за кого себя выдаёт то его пускаем, иначе - обломаем
if (!isset($ok)) exit("$noacsess</B></center><BR><BR>$back<BR><BR></td></table><br>");
}
// Исключаем ошибку вызова несуществующей страницы
if (!isset($_GET['page'])) $page=1; else {$page=$_GET['page']; if (!ctype_digit($page)) $page=1; if ($page<1) $page=1;}
$fm=$qq*($page-1); if ($fm>$maxi) $fm=$maxi-$qq;
$lm=$fm+$qq; if ($lm>$maxi) $lm=$maxi+1;
// формируем переменную $pageinfo - со СПИСКОМ СТРАНИЦ
$pageinfo=""; $addpage=""; $maxpage=ceil(($maxi+1)/$qq); if ($page>$maxpage) $page=$maxpage;
$pageinfo.="<div align=center style='padding:6px;' class=pgbutt>Страницы: ";
if ($page>3 and $maxpage>5) $pageinfo.="<a href=index.php?fid=$fid&id=$id>1</a> ... ";
$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.="<B>$i</B> ";
else {if ($i!=1) $addpage="&page=$i"; $pageinfo.="<a href=index.php?fid=$fid&id=$id$addpage>$i</a> ";} }
if ($page<=$maxpage-3 and $maxpage>5) $pageinfo.="... <a href=index.php?fid=$fid&id=$id&page=$maxpage>$maxpage</a>";
$pageinfo.='</div>';
$qm=null;
do {$dt=explode("|", replacer($lines[$fm]));
$youwr=null; $fm++; $num=$maxi-$fm+2; $status="";
if (strlen($lines[$fm-1])>5) { // Если строчка потерялась в скрипте (пустая строка) - то просто её НЕ выводим
if (isset($_GET['quotemsg'])) {$quotemsg=replacer($_GET['quotemsg']); if(ctype_digit($quotemsg) and $quotemsg==$fm) $qm="[Quote]".$dt[4]."[/Quote]";}
$msg=str_replace("[b]","<b>",$dt[4]);
$msg=str_replace("[/b]","</b>", $msg);
$msg=str_replace("[RB]","<font color=red><B>", $msg);
$msg=str_replace("[/RB]","</B></font>", $msg);
$msg=str_replace("<br>","<br>",$msg);
$msg=preg_replace("#[Quote]s*(.*?)s*[/Quote]#is","<br><B><U>Цитата:</U></B><table width=80% border=0 cellpadding=5 cellspacing=1 style='padding: 5px; margin: 1px'><tr><td class=quote>$1</td></tr></table>",$msg);
$msg=preg_replace("#[Code]s*(.*?)s*[/Code]#is"," <br><B><U>PHP код:</U></B><table width=80% border=0 cellpadding=5 cellspacing=1 style='padding: 5px; margin: 1px'><tr><td class=code >$1</td></tr></table>",$msg);
$msg=preg_replace('#[img(.*?)](.+?)[/img]#','<img src="$2" border="0" $1>',$msg);
if ($antimat==TRUE) { // АНТИМАТ
$pattern="/w{0,5}[хx]([хxs!@#$%^&*+-|/]{0,6})[уy]([уys!@#$%^&*+-|/]{0,6})[ёiлeеюийя]w{0,7}|w{0,6}[пp]([пps!@#$%^&*+-|/]{0,6})[iие]([iиеs!@#$%^&*+-|/]{0,6})[3зс]([3зсs!@#$%^&*+-|/]{0,6})[дd]w{0,10}|[сcs][уy]([уy!@#$%^&*+-|/]{0,6})[4чkк]w{1,3}|w{0,4}[bб]([bбs!@#$%^&*+-|/]{0,6})[lл]([lлs!@#$%^&*+-|/]{0,6})[yя]w{0,10}|w{0,8}[её][bб][лске@eыиаa][наи@йвл]w{0,8}|w{0,4}[еe]([еes!@#$%^&*+-|/]{0,6})[бb]([бbs!@#$%^&*+-|/]{0,6})[uу]([uуs!@#$%^&*+-|/]{0,6})[н4ч]w{0,4}|w{0,4}[еeё]([еeёs!@#$%^&*+-|/]{0,6})[бb]([бbs!@#$%^&*+-|/]{0,6})[нn]([нns!@#$%^&*+-|/]{0,6})[уy]w{0,4}|w{0,4}[еe]([еes!@#$%^&*+-|/]{0,6})[бb]([бbs!@#$%^&*+-|/]{0,6})[оoаa@]([оoаa@s!@#$%^&*+-|/]{0,6})[тnнt]w{0,4}|w{0,10}[ё]([ё!@#$%^&*+-|/]{0,6})[б]w{0,6}|w{0,4}[pп]([pпs!@#$%^&*+-|/]{0,6})[иeеi]([иeеis!@#$%^&*+-|/]{0,6})[дd]([дds!@#$%^&*+-|/]{0,6})[oоаa@еeиi]([oоаa@еeиis!@#$%^&*+-|/]{0,6})[рr]w{0,12}/i";
$msg=preg_replace("$pattern","<b><font color='red'>Цензура</font></b>",$msg); }
if ($smile==TRUE) { // СМАЙЛИКИ
$i=count($smiles)-1; for($k=0; $k<$i; $k=$k+2)
{$j=$k+1; $msg=str_replace("$smiles[$j]","<img src='smile/$smiles[$k].gif' border=0>",$msg);}}
// Если разрешена публикация УРЛов
if ($liteurl==TRUE) $msg=preg_replace("#([url=([^]]+)](.*?)[/url])|(http://(www.)?[0-9a-z.-]+.[a-z]{2,6}[0-9a-z/?=&._-]*)#","<a href="$4" >$4</a> ",$msg);
// считываем в память данные по пользователю
if ($dt[1]=="да") { $iu=$usercount; $predup="0";
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;}
if (isset($_COOKIE['wrfcookies'])) $youwr=preg_replace("#([url=([^]]+)](.*?)[/url])|(http://(www.)?[0-9a-z.-]+.[a-z]{2,6}[0-9a-z/?=&._-]*)#","<a href="$4" >$4</a> ",$du[11]); else $youwr=$du[11];}
} while($iu > "0");
}
if ($tblstyle=="row1") $tblstyle="row2"; else $tblstyle="row1";
if ($fm==1+$qq*($page-1)) { // БЛОК ПЕЧАТАЕМ ОДИН РАЗ
print "<table><tr><td>
<span class=nav> <a href=index.php class=nav>$fname</a> <a href=index.php?fid=$fid class=nav>$frname</a> <a href='index.php?fid=$fid&id=$dt[7]' class=nav><strong>$dt[3]</strong></a></span>
</td></tr></table>
$pageinfo
<table class=forumline width=100% cellspacing=1 cellpadding=3><tr>
<th class=thLeft width=160 height=26 nowrap=nowrap>Автор</th><th class=thRight>Сообщение</th>"; }
print"</tr>
<tr height=150><td class=$tblstyle valign=top><span class=name><BR><center>";
// Проверяем: это гость?
if (!isset($youwr)) {if (strlen($dt[2])>5) print "$dt[0] "; else print"$dt[0] "; $kuda=$fm-1; print" <a href='javascript:%20x()' name='m$fm' onclick="DoSmilie('[b]$dt[0][/b], ');" class=nav>".chr(149)."</a><BR><br>";
// если емайл указан, печатаем форму для отправки ЛС
if (strlen($dt[2])>5) print"<a href='#m$kuda' onclick="window.open('tools.php?event=mailto&email=$dt[2]&name=$dt[0]','email','width=520,height=300,left=170,top=100')"><img src='$fskin/ico_pm.gif' border=0 alt='ЛС'></a>";
print"<br><BR><small>$guest</small>";}
else {
$codename=urlencode($dt[0]);
if (!isset($wrfname)) print"$dt[0]"; else print"<a name='m$fm' href='tools.php?event=profile&pname=$codename' class=nav>$dt[0]</a>";
print" <a href='javascript:%20x()' onclick="DoSmilie('[b]$dt[0][/b], ');" class=nav>".chr(149)."</a><BR><BR><small>";
if (strlen($status)>2 & $dt[1]=="да" & isset($youwr)) print"$status"; else print"$users";
if (isset($reiting)) {if ($reiting>0) {echo'<BR>'; if (is_file("$fskin/star.gif")) {for ($ri=0;$ri<$reiting;$ri++) {print"<img src='$fskin/star.gif' border=0> ";} } }}
if (isset($youavatar)) { if (is_file("avatars/$youavatar")) $avpr="$youavatar"; else $avpr="noavatar.gif";
print "<BR><BR><img src='avatars/$avpr'><BR> <!--
<a href='tools.php?event=profile&pname=$dt[0]'><img src='$fskin/profile.gif' alt='Профиль' border=0></a>
<a href='$site'><img src='$fskin/www.gif' alt='www' border=0></a><BR>
<a href='$icq'><img src='$fskin/icq.gif' alt='ICQ' border=0></a>
<a href='#$fm' onclick="window.open('tools.php?event=mailto&email=$dt[3]&name=$dt[0]','email','width=400,height=390,left=100,top=100')"><img src='$fskin/ico_pm.gif' alt='ЛС'></a>-->";}
} // isset($youwr)
if (isset($youwr) and is_file("$datadir/userstat.dat")) { // ТОЛЬКО участники видят всю репутацию! ;-)
if (isset($ulines[$userpn])) {
if (strlen($ulines[$userpn])>5) {
$ddu=explode("|",replacer($ulines[$userpn]));
if ($wrfname!=$dt[0]) $winop="window.open('tools.php?event=repa&name=$dt[0]&who=$userpn','repa','width=500,height=190,left=100,top=100')"; else $winop="alert('Поднимать рейтинг самому себе ЗАПРЕЩЕНО!!!');";
print"</small></span><br>
<noindex>
<fieldset STYLE='color:#646464'>
<legend STYLE='font-weight:bold;'>Статистика:</legend>
<div style='PADDING:3px;' align=left class=gensmall>Тем создано: $ddu[1]<br>Сообщений: $ddu[2]<br>Репутация: $ddu[3] <A href='#$fm' style='text-decoration:none' onclick="$winop">±</A><br>Предупреждения: <font color=red>$ddu[4]</div>
</fieldset></noindex>"; }}}
print "</td>
<td class=$tblstyle width=100% height=28 valign=top>
<table width=100% height=100%><tr valign=center><td><span class=postbody>$msg</span>";
// БЛОК ГОЛОСОВАНИЯ (Если админ завёл голосование, то выводим)
if ($fm==1+$qq*($page-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"<center>
<FORM name=wrvote action='vote.php' method=POST target='WRGolos'>
<TABLE class=forumline cellSpacing=1 cellPadding=0 align=center border=0>
<TR><Th colspan=3 class=thHead><B>Голосование: $vdt[0] </B></Th></TR>
<TR class=$tblstyle><TD class=$tblstyle>";
do {$vdt=explode("|",$vlines[$vi]);
print"
<INPUT name='votec' type=radio value='$vi'> <B>$vdt[0]</B><br><br>";
$vi++; } while($vi<$vitogo);
print "<center><INPUT name='id' type=hidden value='$id'>
<INPUT type=submit value='проголосовать' onclick="window.open('vote.php','WRGolos','width=650,height=300,left=200,top=200,toolbar=0,status=0,border=0,scrollbars=0')" border=0>
<br><br><A href='#' onclick="window.open('vote.php?rezultat&id=$id','WRGolos','width=650,height=300,left=200,top=200,toolbar=0,status=0,border=0,scrollbars=0')" target='WRRezultGolos'>Результаты</A></center></FORM>
</TD></TR></TABLE>"; }} // КОНЕЦ БЛОКА ГОЛОСОВАНИЯ
print"</td></tr><TR><TD>";
// Если ПРИКРЕПЛЁН ФАЙЛ к сообщению - то показываем значёк и ссылку на него или картинку
if (isset($dt[12])) { if ($dt[12]!="" and is_file("$filedir/$dt[13]")) {
$fsize=round($dt[14]/10.24)/100; echo'<fieldset style="width:30%; color:#008000"><legend>Прикреплён файл:</legend>';
if (preg_match("/.(jpg|jpeg|bmp|gif|png)+$/is",$dt[13]))
print"<img border=0 src='$filedir/$dt[13]'>"; else
print"<img border=0 src='$fskin/ico_file.gif'> <a href='$filedir/$dt[13]'>$dt[13]</a> ($fsize Кб.)</fieldset>"; }}
// печатаем подпись участника
if (isset($youwr)) { if (strlen($youwr)>3) print "<tr><td valign=bottom><span class=postbody>--------------------------------------------------<BR><small>$youwr</small>";}
print"</table></td></tr><tr>
<td class=row3 valign=middle><span class=postdetails><I>Сообщение # <B>$fm</B></I></span></td>
<td class=row3 width=100% height=28><span class=postdetails>Отправлено: <b>$dt[5]</b> в $dt[6]
<noindex> <a href='index.php?fid=$fid&id=$id"emsg=$fm&page=$page#add'>Цитировать сообщение</a></noindex>
</span></td></tr>
<tr><td class=spaceRow colspan=2 height=1><img src="$fskin/spacer.gif" width=1 height=1></td>";
} // если строчка потерялась
} while($fm < $lm);
print" </tr></table> $pageinfo";
if ($cangumsg==FALSE and !isset($wrfname)) {print"<center>Администратор запретил отвечать гостям на сообщения! Для регистрации пройдите по ссылке: <B><a href='tools.php?event=reg'>зарегистрироваться</a></B></center><BR><BR>"; } else {
if ($closed==FALSE) {
if (isset($_COOKIE['wrfcookies'])) {$wrfc=$_COOKIE['wrfcookies']; $wrfc=htmlspecialchars($wrfc); $wrfc=stripslashes($wrfc); $wrfc=explode("|", $wrfc); $wrfpass=replacer($wrfc[1]);} else {unset($wrfpass); $wrfpass="";}
print "
<form action="index.php?event=addanswer&fid=$fid" method=post name=REPLIER enctype="multipart/form-data">
<input type=hidden name=id value='$id'>
<input type=hidden name=userpass value="$wrfpass">
<input type=hidden name=page value='$page'>
<input type=hidden name=zag value="$dt[3]">
<input type=hidden name=maxzd value='$maxzd'>
<table cellpadding=3 cellspacing=1 width=100% class=forumline>
<tr><th class=thHead colspan=2 height=25><b>Сообщение</b></th></tr>";
addmsg($qm);
} else echo'<center><font style="font-size: 16px;font-weight:bold;"><BR>Тема закрыта для обсуждения!<BR><BR>';
}}
} // else isset(event)
?>
</td></tr></table>
<center><font size=-2><small>Powered by <a href="http://www.wr-script.ru" class="copyright">WR-Forum</a> Professional © 1.9.3 <a href="http://www.master-script.ru/scripty_forumov.html" class="copyright">MS</a><br></small></font></center>
</body>
</html>