Удалите лишнее

Тема в разделе "Как сделать...", создана пользователем vave, 1 окт 2012.

  1. vave

    vave

    Регистр.:
    23 июн 2007
    Сообщения:
    368
    Симпатии:
    14
    Очень прошу вас удалить всё лишнее из кода, оставив только превьюшки картинок с переходом на оригинальную картинку.


    PHP:
    <?
     
     
    error_reporting (E_ALL); // ВРЕМЕННО - на время тестирования и отладки скрипта!
    // error_reporting(0); // РАЗКОМЕНТИРУЙТЕ для постоянной работы!!!
    @ini_set('register_globals','off');// Все скрипты написаны для этой настройки php
     
    include "config.php";
     
    $smwidth="180"// Ширина миниизображения
    $smheight="145"// Высота миниизображения
     
    // Определяем URL галереи
    $host=$_SERVER["HTTP_HOST"]; $self=$_SERVER["PHP_SELF"]; $furl=str_replace('photos.php','',"http://$host$self");
     
    $valid_types=array("jpg","jpeg","bmp","gif","png");  // допустимые расширения загружаемых файлов
     
    function replacer ($text) { // ФУНКЦИЯ очистки кода
    $text=str_replace("&#032;",' ',$text);
    $text=str_replace(">",'&gt;',$text);
    $text=str_replace("<",'&lt;',$text);
    $text=str_replace("\"",'&quot;',$text);
    $text=preg_replace("/\n\n/",'<p>',$text);
    $text=preg_replace("/\n/",'<br>',$text);
    $text=preg_replace("/\\\$/",'&#036;',$text);
    $text=preg_replace("/\r/",'',$text);
    $text=preg_replace("/\\\/",'&#092;',$text);
    // если magic_quotes включена - чистим везде СЛЭШи в этих случаях: одиночные (') и двойные кавычки ("), обратный слеш (\)
    if (get_magic_quotes_gpc()) { $text=str_replace("&#092;&quot;",'&quot;',$text); $text=str_replace("&#092;'",'\'',$text); $text=str_replace("&#092;&#092;",'&#092;',$text); }
    $text=str_replace("\r\n","<br> ",$text);
    $text=str_replace("\n\n",'<p> ',$text);
    $text=str_replace("\n",'<br> ',$text);
    $text=str_replace("\t",'',$text);
    $text=str_replace("\r",'',$text);
    $text=str_replace('  ',' ',$text);
    return 
    $text; }
     
     
     
     
     
    function 
    prcmp ($a$b) {if ($a==$b) return 0; if ($a<$b) return -1; return 1;} // Функция сортировки
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
    // ДОБАВЛЕНИЕ ТЕМЫ или ОТВЕТА - ШАГ 1
    if(isset($_GET['event'])) {
     
    //Проверка ЗАПРЕТА IP-пользователя на добавление объявлений (файл bad_ip.dat)
    $ip=$_SERVER['REMOTE_ADDR']; // определяем IP юзера
    if (is_file("$datadir/bad_ip.dat")) { $lines=file("$datadir/bad_ip.dat"); $i=count($lines);
    if (
    $i>0) {do {$i--; $idt=explode("|"$lines[$i]);
      if (
    $idt[0]===$ip) exit("<noindex><script language='Javascript'>function reload() {location = \"$furl\"}; setTimeout('reload()', 10000);</script><center><br><br><B>Админитратор заблокировал для Вашего IP: $ip<br> возможность добавлять что-либо по следующей причине:<br><br> <font color=red><B>$idt[1].</B></font><br><br>Вам разрешено просматривать сообщения,<br> а вот ДОБАВЛЯТЬ ТЕМЫ/СООБЩЕНИЯ категорически ЗАПРЕЩЕНО!</B></noindex>");
    } while(
    $i "1");} unset($lines);}
     
    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['id'];
    if (
    $_GET['event']=="addanswer"$id=substr($fid,3,4);
    if (
    strlen($fid)>3$fid=substr($fid,0,3);
     
    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 (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]=="$fid$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
    if (isset($_POST['userpass'])) $userpass=replacer($_POST['userpass']); // получаем и обрабатываем пароль юзера из файлов
    else $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$ok=FALSE;
    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 (
    $ok==FALSE) {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>");
     
    // БЛОК ГЕНЕРИРУЕТ СЛЕДУЮЩИЙ ПО ПОРЯДКУ НОМЕР ТЕМЫ, начиная просмотр с 1000
    // считываем весь файл с темами в память
    if ($_GET['event']=="addtopic") { $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"; } // if (event==addtopic)
     
    // генерируем имя файлу с темой - СТАРЫЙ механизм
    //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 (isset($_FILES['file']['name'])) { // ЕСЛИ ДОБАВЛЯЕМ ФАЙЛ
    $fotoname=replacer($_FILES['file']['name']); if (strlen($fotoname)>3) { $fotosize=$_FILES['file']['size']; // Имя и размер файла
     
    //---- ЗАЩИТЫ от ВЗЛОМА -----
     
    // 1. Проверяем РАСШИРЕНИЕ
    $ext strtolower(substr($fotonamestrrpos($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>\r\n");
     
    // 2. если в имени есть .php, .html, .htm - свободен!
    $bag="Извините, но в имени ФАйла <B>запрещено</B> использовать .php, .html, .htm";
    if (
    preg_match("/\.php/i",$fotoname)) exit("Вхождение <B>.php</B> найдено. $bag");
    if (
    preg_match("/\.html/i",$fotoname)) exit("Вхождение <B>.html</B> найдено. $bag");
    if (
    preg_match("/\.htm/i",$fotoname)) exit("Вхождение <B>.htm</B> найдено. $bag");
     
    // 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 ($_GET['event']!="addtopic"$numb="$fid$id"; else $numb=$id;
    if (
    $random_name==TRUE) {do $key=mt_rand(1000,9999); while (file_exists("$filedir/$numb$key.$ext")); $fotoname="$numb$key.$ext";}
     
    if (
    copy($_FILES['file']['tmp_name'], $filedir."/".$fotoname)) {print "<br><br>Файл УСПЕШНО загружен: $fotoname (Размер: $fotosize байт)"$fotodetali="1|$fotoname|$fotosize|";}
    else echo 
    "ОШИБКА загрузки файла - $fotoname...\n"; }}
     
    // Проверяем размер фото. Если "габариты" меньше заданный в админке 150 х 120 - то ничего с ним не делаем
    // блок делает мальное изображение исходной фотки - в качестве превьюшки
    $size=getimagesize($_FILES['file']['tmp_name']);
    if (
    $size[0]>$smwidth or $size[1]>$smheight) {
    $smallfoto="sm-$fotoname";
    require (
    'tumbmaker.php');
    if (
    img_resize("$filedir/$fotoname""$filedir/$smallfoto"$smwidth$smheight))  echo 'Изображение масштабировано <B>успешно</B>.'; else  echo '<font color=red><B>Ошибка МАСШАБИРОВАНИЯ фото! Поблемы с GD-библиотекой!</B></font> Обратитесь к Администратору';
    } else 
    $smallfoto="$fotoname";
     
    $tektime=time();
    $name=wordwrap($name,30,' ',1); // разрываем длинные строки
    $zag=wordwrap($zag,50,' ',1);
    $name=str_replace("|","I",$name);
    $who=str_replace("|","&#124;",$who);
    $email=str_replace("|","&#124;",$email);
    $zag=str_replace("|","&#124;",$zag);
    $msg=str_replace("|","&#124;",$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 (
    strlen($id)>8) exit("<B>$back. Номер темы должен быть числом. Критическая ошибка скрипта или попытка взлома</B>");
    if (
    strlen(ltrim($zag))<3) exit("$back ! Ошибка в вводе данных заголовка!");
     
    $ip=$_SERVER['REMOTE_ADDR']; // определяем IP юзера
    $text="$name|$who|$email|$zag|$msg|$date|$time|$id||$tektime|$smname|$smzag|$fotodetali|$ip|$smallfoto|$size[0]|$size[1]|$fotoksize|||||";
    $text=replacer($text); $exd=explode("|",$text);
    $name=$exd[0]; $zag=$exd[3]; $smname=$exd[10]; $smzag=$exd[11]; $smmsg=$exd[4];
     
     
     
     
     
     
     
     
    $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") {$main_id="$id"$dt[4]++;} else $main_id="$fid$id";
    $txtdat="$dt[0]|$dt[1]|$dt[2]|$main_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==$realfidfputs($fp,"$txtdat\r\n"); 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/$fid$id.dat")) $nlines2=count(file("$datadir/$fid$id.dat"))+1; else $nlines2=1;
     
    $newmessfile="$datadir/news.dat";
    $newlines=file("$newmessfile"); $ni=count($newlines)-1$i2=0$newlineexit="";
    $ntext="$fid|$main_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 ("$fid$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($fpimplode("",$file));
    fflush ($fp);
    flock ($fp,LOCK_UN);
    fclose($fp);}
    }
    }
    // if ($newmess==TRUE)
     
     
    // БЛОК добавляет +1 к репе и +1 к сообщению или +1 к кол-ву тем, созданных юзером
     
    if (isset($_COOKIE['wrfcookies']) and ($ok!=FALSE)) {
    $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]||||\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 (
    $_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/$id.dat","a+");
    flock ($fp,LOCK_EX);
    fputs($fp,"$text\r\n");
    fflush ($fp);
    flock ($fp,LOCK_UN);
    fclose($fp);
     
    print 
    "<script language='Javascript'>function reload() {location = \"photos.php?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='photos.php?id=
    $id'>ДАЛЬШЕ >>></a></B></td></tr></table></td></tr></table></center></body></html>";
    exit; }
     
     
     
    if (
    $_GET['event'] =="addanswer")  { //ОТВЕТ В ТЕМЕ - запись данных
    $timetek=time(); $timefile=filemtime("$datadir/$fid$id.dat");
    $timer=$timetek-$timefile// узнаем сколько прошло времени (в секундах)
    $fp=fopen("$datadir/$fid$id.dat","a+");
    flock ($fp,LOCK_EX);
    fputs($fp,"$text\r\n");
    fflush ($fp);
    flock ($fp,LOCK_UN);
    fclose($fp);
    if (
    $timer<0) {$viptime=strtotime("+2 year"); touch("$datadir/$fid$id.dat",$viptime);}
     
    print 
    "<script language='Javascript'>function reload() {location = \"photos.php?id=$fid$id$pageadd#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='photos.php?id=
    $fid$id$pageadd#m$in'>ДАЛЬШЕ >>></a></B></td></tr></table></td></tr></table></center></body></html>";
    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("<center><b>Файл РУБРИК несуществует! Зайдите в <a href='admin.php'>админку</a> и создайте рубрики!</b>");
     
    $error=FALSE$raz=""$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)<=and !is_file("$datadir/topic$id.dat")) $error="ый Вами раздел";
    if (
    strlen($id)> 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;
    $imax=count($mainlines); $i=$imax;
     
    // проходим по всем разделам и топикам - ищем запрашиваемый
    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)>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("<meta name=\"Robots\" content=\"photos,follow\">",'<meta name="Robots" content="noindex,follow">',$topurl);
    print
    "$topurl";
    if (
    strlen($error)>1) exit("</td></tr></table><div align=center><br>Извините, но запрашиваем$error отсутствует.<br>
    Рекомендую перейти на главную страницу фотоальбома по <a href='
    $furl'>этой ссылке</a>,<br>
    и найти интересующую Вас тему.<br></div>
    </td></tr></table></td></tr></table></td></tr></table>"
    ); }
    // if (isset($_GET['id']))
     
     
     
     
     
     
     
     
    if (isset($_GET['id'])) { $id=$_GET['id'];
     
     
    // страница С ТЕМАМИ выбранной РУБРИКИ
    if (strlen($id)==3) { $fid=$id;
     
    // Защиты
    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>Данный раздел удалён или не существует.</b>");
     
     
     
    if (
    $raz!="razdel") {
     
     
    // определяем есть ли информация в файле с данными
    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]);
     
     
     
     
     
     
    if (
    is_file("$datadir/$filename.dat")) { // если файл с темой существует - то показать тему в списке!
    $msgsize=sizeof(file("$datadir/$filename.dat"));
     
    if (
    $temp>0) print"</TD><TD>"; if ($temp==0) print"<TR><TD>"// открываем главную по отношению к 2-м по 400 таблицу
     
     
     
     
     
     
    print"</b></span>";
     
     
     
    print
    "<br>$dt[4]<br><br><span class=gensmall>Добавил ";
     
    $codename=urlencode($dt[0]);
    if (
    $dt[1]=="да") {
    if (!isset(
    $wrfname)) print "$dt[0]"; else print "<small>($users)</small> ";} else  print"<small>гость</small> $dt[0]";
     
     
     
    $temp++; if ($temp==2) {$temp=0; print"</td></tr>";} // Нужно чтобы делить на два столбика
     
    // защита if (strlen...) только если файл есть и имеет верный формат - выводим
    if ($msgsize>=2) {$linesdat=file("$datadir/$filename.dat"); $dtdat=explode("|"$linesdat[$msgsize-1]);
    if (
    strlen($linesdat[$msgsize-1])>10) {$dt[0]=$dtdat[0]; $dt[1]=$dtdat[1]; $dt[2]=$dtdat[2]; $dt[5]=$dtdat[5]; $dt[6]=$dtdat[6];}}
    //if is_file
     
    } while($lm $fm);
     
    if (
    $stop!=TRUE$addbutton.="<br><span class=nav><a name='add' href=\"photos.php?add=razdel&id=$fid\"><img src='$fskin/add_razdel.gif' border=0></a>&nbsp;";
    else 
    $addbutton.="Извините за неудобство, но администратор временно приостановил добавление тем и сообщений!";
     
    // формируем переменную $pageinfo - со СПИСКОМ СТРАНИЦ
    if (strlen($findme)>1$findadd="&findme=$findme"; else $findadd="";
     
     
    $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> &nbsp;";
    else {if (
    $i!=1$addpage="&page=$i"$pageinfo.="<a href=photos.php?id=$fid$addpage$findadd>$i</a> &nbsp;";} }
    if (
    $page<=$maxpage-and $maxpage>5$pageinfo.="... <a href=photos.php?id=$fid&page=$maxpage$findadd>$maxpage</a>";
    $pageinfo.='</div>';
     
    print
    "</td></tr></table>
    $addbutton<TD><table width=100%><tr><td align=right colspan=3>
    $pageinfo</b></span></td></tr></table>";
     
    } else print
    "$addbutton<br><span class=nav><a name='add' href=\"photos.php?add=razdel&id=$fid\"><img src='$fskin/add_razdel.gif' border=0></a>&nbsp;";
     
    } else print
    "$addbutton";
     
    echo
    '</tr></table><BR>';
     
     
    if (isset(
    $_GET['add'])) { if ($cangutema=="0" and !isset($wrfname)) print"<center><h5>Администратор запретил создавать гостям темы! Для регистрации пройдите по ссылке: <B>зарегистрируйтесь</B></h5></center><BR><BR>"; else {
    $maxzag=$maxzag-10// так нужно!!!
    print"<form action=\"photos.php?event=addtopic&id=$fid\" method=post enctype=\"multipart/form-data\" name=REPLIER>
    <table border=0>
    <tr><td class=catHead colspan=2 height=28><span class=cattitle>Добавление раздела</span></td></tr>
    <tr><td class=row1 valign=top><span class=genmed><B>Заголовок раздела</B></span></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("");
    } }
     
     
     
    }
    //if ($raz!="razdel")
     
     
     
     
     
     
     
     
    // показываем СООБЩЕНИЯ выбранной темы
    if (strlen($id)>6) { $fid=substr($id,0,3);
     
    // определяем есть ли информация в файле с данными
    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 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=FALSE;
    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 ($ok!=FALSE) 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;
     
     
    $qm=null$flag=0;
    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][b]$dt[0] пишет:[/b]\r\n".$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("&lt;br&gt;","<br>",$msg);
     
     
    // Если разрешена публикация УРЛов
    if ($liteurl==TRUE$msg=preg_replace ("#([^\[img\]])(http|https|ftp|goper):\/\/([a-zA-Z0-9\.\?&=\;\-\/_]+)([\W\s<\[]+)#i""\\1<a href=\"\\2://\\3\" target=\"_blank\">\\2://\\3</a>\\4"$msg);
     
    // запускать ТОЛЬКО после замены АДРЕСА URL!!!
    $msg=preg_replace('#\[img\](.+?)\[/img\]#','<img src="$1" border="0">',$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\" target='_blank'>$4</a> ",$du[11]); else $youwr=$du[11];}
    } while(
    $iu "0");
    }
     
    if (
    $tblstyle=="row1"$tblstyle="row2"; else $tblstyle="row1";
     
    if (
    $flag==FALSE) { // БЛОК ПЕЧАТАЕМ ОДИН РАЗ
    $frname=str_replace(' ->','',$frname); $frtname=str_replace(' ->','',$frtname); //вырезаем лишние символы
    $flag=TRUE;
    print 
    "
     
     
    <table border=0 width=126 cellspacing=0 cellpadding=0><tr>"
    ;}
     
     
     
     
     
     
     
     
    print
    "<td valign=top>
    <table>
    <tr><td valign=top align=center class=row1>
     
    <table width=1 height=1 cellpadding=0 cellspacing=0 style='margin:10px;'><tr>
        <td align=center>"
    ;
     
    // Если ПРИКРЕПЛЁН ФАЙЛ к сообщению - то показываем значёк и ссылку на него или картинку
    if (isset($dt[12])) { if ($dt[12]!="" and is_file("$filedir/$dt[13]")) {
    $fsize=round($dt[14]/10.24)/100;
    if (
    preg_match("/.(jpg|jpeg|bmp|gif|png)+$/is",$dt[13]))
    print
    "<a href='$filedir/$dt[13]'><img border=0 src='$filedir/$dt[17]'></a>";}}
     
    $addpage=""; if ($page>1$addpage="&page=$page"// нужно для цитирования
    print"<img src=\"$fskin/spacer.gif\" width=1 height=1>";
     
     
     
    if (
    $dt[2]!=""$dt[2]="<a href='mailto:$dt[2]' class=gallery>$dt[1]</a>"; else $dt[2]="$dt[0]";
    print
    "</table>
    </td></tr></table>
    </td>"
    ;
     
    $colrubperpage=3;
    $cm=1// ДЕЛИМ ВСЕ РУБРИКИ на столбцы
    if ((round($fm/$colrubperpage))==($fm/$colrubperpage)) {$cm++; print "</TR><TR>";}
     
     
    }
     
    // если строчка потерялась
    } while($fm $lm);
     
    print
    " </tr></table> $pageinfo";
     
     
    {
    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="";}
     
    if (
    $stop==FALSE) {
     
     
     
     
    } else echo
    '<center>Извините за неудобство, но администратор временно приостановил добавление тем и сообщений!';
    } else echo
    '<center><font style="font-size: 16px;font-weight:bold;"><BR>Тема закрыта для обсуждения!<BR><BR>';
    }}
     
    }
    }
     
     
     
     
     
    ?>
    </td></tr></table>
    </body>
    </html>

    а вот код который нужно оставить,
    PHP:
    if (isset($dt[12])) { if ($dt[12]!="" and is_file("$filedir/$dt[13]")) {
    $fsize=round($dt[14]/10.24)/100;
    if (
    preg_match("/.(jpg|jpeg|bmp|gif|png)+$/is",$dt[13]))
    print
    "<a href='$filedir/$dt[13]'><img border=0 src='$filedir/$dt[17]'></a>111";}}
     
    $addpage=""; if ($page>1$addpage="&page=$page"// нужно для цитирования
    print"<img src=\"$fskin/spacer.gif\" width=1 height=1>";
    когда я начинаю чистить, скрипт сразу выдаёт ошибки...