'; if ($wrfname!=null) { $codename=urlencode($wrfname); // Кодируем имя в СПЕЦФОРМАТ, для поддержки корректной передачи имени через GET-запрос. print "Ваш профиль  Выход [$wrfname]";} else {print " Регистрация   Вход";} if (is_file("$forum_skin/tiptop.html")) include("$forum_skin/tiptop.html"); // подключаем дополнение к ВЕРХУШКе print"Сегодня: $date - $time"; return true;} function replacer ($text) { // ФУНКЦИЯ очистки кода $text=str_replace(" ",' ',$text); $text=str_replace(">",'>',$text); $text=str_replace("<",'<',$text); $text=str_replace("\"",'"',$text); $text=preg_replace("/\n\n/",'

',$text); $text=preg_replace("/\n/",'
',$text); $text=preg_replace("/\\\$/",'$',$text); $text=preg_replace("/\r/",'',$text); $text=preg_replace("/\\\/",'\',$text); // если magic_quotes включена - чистим везде СЛЭШи в этих случаях: одиночные (') и двойные кавычки ("), обратный слеш (\) if (get_magic_quotes_gpc()) { $text=str_replace("\"",'"',$text); $text=str_replace("\'",'\'',$text); $text=str_replace("\\",'\',$text); } $text=str_replace("\r\n","
",$text); $text=str_replace("\n\n",'

',$text); $text=str_replace("\n",'
',$text); $text=str_replace("\t",'',$text); $text=str_replace("\r",'',$text); $text=str_replace(' ',' ',$text); return $text; } function unreplacer($text) { // ФУНКЦИЯ замены спецсимволов конца строки на обычные $text=str_replace("<br>","
",$text); return $text;} function nospam() { global $max_key,$rand_key,$antispam2012,$antispam2012v; // Функция АНТИСПАМ 2011+2012 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''; $nummax=0; for ($i=0; $i<=$max_key; $i++) { $snum[$i]=mt_rand(0,9); $psnum=md5($snum[$i]+$rand_key+$dopkod); $secret=mt_rand(0,1); $styles='bgcolor=#FFFF00'; if ($nummax<3) { if ($secret==1 or $i==0) {$styles='bgcolor=#77C9FF'; $xkey=$xkey.$snum[$i]; $nummax++;}} echo "\r\n";} $xkey=md5("$xkey+$rand_key+$dopkod"); //число + ключ из data/config.php + код меняющийся кажые 24 часа print"
Защитный код:\n (введите цифры, которые на голубом фоне)
"; if ($antispam2012==TRUE) print"Ответ на вопрос: ($antispam2012v)"; return; } // функция используется для отображения аватаров function get_dir($path='./', $mask='*.php', $mode=GLOB_NOSORT) { if ( version_compare( phpversion(), '4.3.0', '>=' ) ) {if ( chdir($path) ) {$temp=glob($mask,$mode); return $temp;}} return false;} if (isset($_GET['rss'])) { // ПОКАЗЫВАЕМ ЛЕНТУ RSS $forum_name=replacer($forum_name); $forum_info=replacer($forum_info); $forum_url.="index.php"; $adminemail=replacer($adminemail); // Формируем RSS-файл echo " RSS лента новостей: $forum_name $forum_url $forum_info Russian Rootman $adminemail $adminemail WR-Forum 2.0 RSS-module $date $time "; // Чтение новостей и их вывод на экран $lines=file("$datadir/news.dat"); $itogo=sizeof($lines); $x=$itogo-1; do { $dt=explode("|",replacer($lines[$x])); $xdate=date("r",$dt[4]); // конвертируем дату в формат ленты RSS $fid=$dt[2]; $id=$dt[3]; $zag=$dt[5]; $name=$dt[8]; $msg=$dt[14]; $msg=str_replace("&","&",$msg); $msg=str_replace('\"','"',$msg); $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("
","\r\n", $msg); $msg=str_replace("&lt;br&gt;","

", $msg); $msg=""; echo " $zag $forum_url?id=$fid$id <b>$name пишет:</b> <br><br> $msg <br><br> $name $forum_url?id=$fid$id $xdate "; $x--; } while ($x>=0); echo " "; exit;} // КОНЕЦ БЛОКА RSS // ВСЁ, что делается при наличии переменной $_GET['event'] if(isset($_GET['event'])) { if ($_GET['event']=="login") { // ВХОД на форум УЧАСТНИКОМ $frname="Вход на форум .:. "; $frtname=""; include("$forum_skin/top.html"); addtop(); // подключаем ШАПКУ форума echo '



Вход на форум
Имя:
Пароль:



Забыли пароль? Введите на выбор:
Ваш Емайл: *
Имя (Ник):
* На Ваш электронный адрес будет выслана
информация для восстановления учётной записи.





'; exit;} // РЕПУТАЦИЯ - окно выбора: шаг 1 if ($_GET['event']=="repa") { if (!isset($_GET['name'])) exit("Нет данных переменной name."); $name=replacer($_GET['name']); $topurl="$forum_skin/top.html"; // подключаем ШАПКУ форума, но урезаем её $frtname=""; $frname=""; $forum_name="РЕПУТАЦИЯ: изменение и просмотр"; //ob_start(); include $topurl; $topurl=ob_get_contents(); ob_end_clean(); // !!! НЕ РАБОТАЕТ В PHP 7 // $topurl=file_get_contents($topurl); eval(); -выяснить как сделать правильно???? ЧТОБЫ И В PHP 5 И 7 РАБОТАЛО!! $stroka=strpos($topurl, ""); $topurl=substr($topurl,0,$stroka); print"
"; // Если куков нет - облом, если куки есть и равны имени юзера - облом. if (!isset($_COOKIE['wrfcookies'])) exit("


Просмотр и изменение РЕПУТАЦИИ может производить только участник форума!"); else { $wrfc=$_COOKIE['wrfcookies']; $wrfc=htmlspecialchars($wrfc,ENT_COMPAT,"windows-1251"); $wrfc=stripslashes($wrfc); $wrfc=explode("|", $wrfc); $wrfname=$wrfc[0]; if ($wrfname===$name) print"По правилам форума поднимать репутацию себе ЗАПРЕЩЕНО!

"; else { print "
Изменение РЕПУТАЦИИ участника $name
-5 -2 -1 0 +1 +2 +5
Причина:
";} if (is_file("$datadir/repa.dat")) { // Ищем в файле repa.dat инфу об этом юзере и выводим, если есть $file="$datadir/repa.dat"; $lines=file("$file"); $i=count($lines); print""; do {$i--; $dt=explode("|",$lines[$i]); if (strlen($dt[3])>1) $dt[3]="$dt[3]"; else $dt[3]="Робот форума"; if ($dt[1]>0) $dt[1]="$dt[1]";} } while($i>0); echo'
Изменение репутации участника $name
КогдаКтоБаллПричина
$dt[1]"; else $dt[1]="$dt[1]"; if ($dt[2]==$name) {$dt[0]=date("d.m.y в H:i",$dt[0]); print"
$dt[0]$dt[3]$dt[4]
'; } // есть есть файл repa.dat echo''; exit; }} // РЕПУТАЦИЯ - сохранение: шаг 2 if ($_GET['event']=="repasave") { if (isset($_COOKIE['wrfcookies'])) {$wrfc=$_COOKIE['wrfcookies']; $wrfc=htmlspecialchars($wrfc,ENT_COMPAT,"windows-1251"); $wrfc=stripslashes($wrfc); $wrfc=explode("|", $wrfc); $wrfname=$wrfc[0];} else exit('Только участники форума могут изменять репутацию!'); if (!isset($_POST['name'])) exit("Нет данных переменной name."); $name=replacer($_POST['name']); if (isset($_POST['repa'])) $repa=$_POST['repa']; else exit("Нет данных переменной repa"); if (isset($_POST['pochemu'])) $pochemu=$_POST['pochemu']; else exit("Укажите причину смены репутации"); if (!is_numeric($repa)) exit("$back. Попытка взлома. Не хулигань, друг!"); if ($repa>5 or $repa<-5) exit("$back. Попытка взлома. Репу можно менять только на +-5 пунктов. Не хулигань, друг!"); if (strlen($pochemu)<1 or strlen($pochemu)>150) exit("$back. Текст причины должен быть указан! И быть не более 150 символов!"); $today=time(); // БЛОК добавляет + к репутации ЮЗЕРА //ИМЯ_ЮЗЕРА|Тем|Сообщений|Репутация|Предупреждения Х/5|Когда последний раз меняли рейтинг в UNIX формате||| $ufile="$datadir/userstat.dat"; $ulines=file("$ufile"); $ui=count($ulines)-1; $ulinenew=""; $username=""; $ip=$_SERVER['REMOTE_ADDR']; // определяем IP юзера // Ищем юзера по имени в файле userstat.dat, если недавно голосовали за него, запрещаем for ($i=0;$i<=$ui;$i++) {$udt=explode("|",$ulines[$i]); if ($udt[2]==$name) {$udt[7]=$udt[7]+$repa; if (strlen($udt[1])>5) {$next=$today-$udt[1]; sleep(1); if ($ip==$udt[10]) exit("

$back

C вашего IP-адреса уже были голосования за репутацию этого участника. Изменять репутацию этому участнику Вам нельзя до тех пор, пока кто-нибудь с другог IP не проголосует за него!"); if ($next<180) {$last=180-$next; exit("$back. Рейтинг этого участника
уже был изменён только что.
Ожидайте $last секунд.
");}} $ulines[$i]="$udt[0]|$today|$udt[2]|$udt[3]|$udt[4]|$udt[5]|$udt[6]|$udt[7]|$udt[8]|$udt[9]|$ip|$udt[11]|\r\n"; } $ulinenew.="$ulines[$i]";} // Записываем данные в файл $fp=fopen("$ufile","w"); flock ($fp,LOCK_EX); fputs($fp,"$ulinenew"); fflush ($fp); flock ($fp,LOCK_UN); fclose($fp); // Записываем данные в файл REPA.DAT //дата в UNIX-формате|сколько баллов|имя_кому_меняли|кто_менял|причина|||| $fp=fopen("$datadir/repa.dat","a+"); flock ($fp,LOCK_EX); fputs($fp,"$today|$repa|$name|$wrfname|$pochemu||||\r\n"); fflush ($fp); flock ($fp,LOCK_UN); fclose($fp); exit("



Рейтинг успешно пересчитан.


Закрыть окно
"); } if ($_GET['event']=="ban") { // ПРОСМОТР СПРАВОЧНОЙ ИНФОРМАЦИИ ПО БАНам $ban=$_GET['znach']; if ((!ctype_digit($ban)) or (strlen($ban)>1)) exit("$back. Попытка взлома. Значение бана - только цифра от 0 до 5 !"); print"

Система штрафов за нарушения.

ШТРАФЫ выбранного участника (назначает администратор или модератор):

"; if ($ban=="0") echo 'текущий статус: '; echo'0 - у участника нет ограничений на работу на форуме;
'; if ($ban=="1") echo 'текущий статус: '; echo'1 - антифлуд увеличиваем до 60 секунд;
'; if ($ban=="2") echo 'текущий статус: '; echo'2 - дополнительно участник не имеет права менять репутацию кому-либо;
'; if ($ban=="3") echo 'текущий статус: '; echo'3 - ещё запрещено создавать темы (Работает. Админ/модер может активировать);
'; if ($ban=="4") echo 'текущий статус: '; echo'4 - дополительно блокируем доступ к ответу в темах, разрешаем только просмотр (Работает. Админ/модер может активировать);
'; if ($ban=="5") echo 'текущий статус: '; echo'5 - полный запрет доступа к форуму: БАН на 1 месяц!
'; echo'


* Пункты 1,2,5 системы штрафов настраивается. В настоящее время эти пункты не работают.'; exit;} // ОТПРАВКА СООБЩЕНИЯ юзеру if ($_GET['event']=="mailto") { if ($sendmail!=TRUE) exit("$back.
Извините, но функция отправки писем ЗАБЛОКИРОВАНА администратором!


Закрыть окно
"); if (!isset($_POST['email'])) exit("Нет данных переменной email."); if (!isset($_POST['name'])) exit("Нет данных переменной name."); $uemail=replacer($_POST['email']); $uname=replacer($_POST['name']); $id=""; $fid=""; if (isset($_POST['id'])) {$id=replacer($_POST['id']); if (strlen($id)>0) $fid=substr($id,0,3);} print " Отправление сообщения автору объявления
Получатель сообщения: $uname
  Ваше Имя:* и E-mail:*
  Сообщение:*
"; if ($antispam==TRUE and !isset($wrfname)) nospam(); // АНТИСПАМ ! if ($id!="") print""; echo'
'; exit; } // ШАГ 2 отправки сообщения пользователю if ($_GET['event']=="mailtogo") { $name=replacer($_POST['name']); $email=replacer($_POST['email']); $msg=replacer($_POST['msg']); if (isset($_POST['fid'])) $fid=replacer($_POST['fid']); if (isset($_POST['id'])) $id=replacer($_POST['id']); $uname=replacer($_POST['uname']); $uemail=replacer($_POST['uemail']); //--А-Н-Т-И-С-П-А-М--проверка кода-- if ($antispam==TRUE) { if (!isset($_POST['usernum']) or !isset($_POST['xkey']) or !isset($_POST['stime']) ) exit("данные из формы не поступили!"); $usernum=replacer($_POST['usernum']); $xkey=replacer($_POST['xkey']); $stime=replacer($_POST['stime']); $dopkod=mktime(0,0,0,date("m"),date("d"),date("Y")); // доп.код. Меняется каждые 24 часа $usertime=md5("$dopkod+$rand_key");// доп.код $userkey=md5("$usernum+$rand_key+$dopkod"); if (($usertime!=$stime) or ($userkey!=$xkey)) exit("введён ОШИБОЧНЫЙ код!");} if (!preg_match('/^([0-9a-zA-Z]([-.w]*[0-9a-zA-Z])*@([0-9a-zA-Z][-w]*[0-9a-zA-Z].)+[a-zA-Z]{2,9})$/si',$email) and strlen($email)>30 and $email!="") exit("$back и введите корректный E-mail адрес!
"); if (!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',$uemail) and strlen($uemail)>30 and $uemail!="") exit("$back у пользователя задан несуществующий адрес!

"); if ($name=="") exit("$back Вы не ввели своё имя!
"); if ($msg=="") exit("$back Вы не ввели сообщение!"); $text="$name|$msg|$uname|$email|"; $text=str_replace("\r\n","
",$text); $exd=explode("|",$text); $name=$exd[0]; $msg=$exd[1]; $uname=$exd[2]; $email=$exd[3]; $headers=null; // Настройки для отправки писем $headers.="From: $name $email\n"; $headers.="X-Mailer: PHP/".phpversion()."\n"; $headers.="Content-Type: text/html; charset=windows-1251"; // Собираем всю информацию в теле письма $allmsg="

$uname, это сообщение отправлено вам от посетителя форума
$forum_name

Имя$name
E-mail:$email
Сообщение:
$msg
Дата отправки сообщения:$time - $date г.
Перейти на главную страницу:$forum_url


* Данное письмо сгенерировано и отправлено роботом, отвечать на него не нужно. "; mail("$uemail", "Сообщение от посетителя форума ($forum_name) от $name ", $allmsg, $headers); exit('



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


Закрыть окно
'); } // проверка имени/пароля и вход на форум if ($_GET['event']=="regenter") { if (!isset($_POST['name']) & !isset($_POST['pass'])) exit("$back введите имя и пароль!"); $name=str_replace("|","I",$_POST['name']); $pass=replacer($_POST['pass']); $name=replacer($name); $name=strtolower($name); if (strlen($name)<1 or strlen($pass)<1) exit("$back Вы не ввели имя или пароль!"); // проходим по всем пользователям и сверяем данные $lines=file("$datadir/user.php"); $i=count($lines); $regenter=FALSE; $pass=md5("$pass"); do {$i--; $rdt=explode("|",$lines[$i]); if (isset($rdt[1])) { // Если строчка НЕ ПУСТА if ($name===strtolower($rdt[2]) & $pass===$rdt[3]) { if ($rdt[16]==FALSE) exit("$back. Ваша учётная запись не активирована. Для активации Вам необходимо перейти по ссылке, которая должна прийти Вам на емайл."); $regenter=TRUE; $tektime=time(); $wrfcookies="$rdt[2]|$rdt[3]|$tektime|$tektime|"; setcookie("wrfcookies", $wrfcookies, time()+1728000); }} // if-ы } while($i > "1"); if ($regenter==FALSE) exit("$back Ваш данные НЕ верны!"); Header("Location: index.php"); } // Регистрация НОВЫЙ ШАГ 2!! отправка на мыл подтверждения и сохранение в БД if ($_GET['event']=="regnxt") { if (!isset($_POST['name']) & !isset($_POST['pass'])) exit("$back введите имя и пароль!"); $name=str_replace("|","I",$_POST['name']); $pass=str_replace("|","I",$_POST['pass']); $dayreg=$date; $name=trim($name); // Вырезает ПРОБЕЛьные символы if (isset($_POST['email'])) $email=$_POST['email']; else $email=""; $email=strtolower($email); //--А-Н-Т-И-С-П-А-М--проверка кода-- if ($antispam==TRUE) { if (!isset($_POST['usernum']) or !isset($_POST['xkey']) or !isset($_POST['stime']) ) exit("данные из формы не поступили!"); $usernum=replacer($_POST['usernum']); $xkey=replacer($_POST['xkey']); $stime=replacer($_POST['stime']); $dopkod=mktime(0,0,0,date("m"),date("d"),date("Y")); // доп.код. Меняется каждые 24 часа $usertime=md5("$dopkod+$rand_key");// доп.код $userkey=md5("$usernum+$rand_key+$dopkod"); if (($usertime!=$stime) or ($userkey!=$xkey)) exit("введён ОШИБОЧНЫЙ код!"); // АНТИСПАМ 2012! if ($antispam2012==TRUE) { $ao=replacer($_POST['antispam2012o']); if (strtolower($antispam2012o)!=strtolower($ao) or strlen($ao)<1) exit("введён ошибочный ответ на вопрос!");} } if (preg_match("/[^(\\w)|(\\x7F-\\xFF)|(\\-)]/",$name)) exit("$back Ваше имя содержит запрещённые символы. Разрешены русские и английские буквы, цифры и подчёркивание!!."); if ($name=="" or strlen($name)>$maxname) exit("$back ваше имя пустое, или превышает $maxname символов!"); if ($pass=="" or strlen($pass)<1 or strlen($pass)>$maxname) exit("$back Вы не ввели пароль. Пароль не должен быть пустым."); if(!preg_match("/^[a-z0-9\.\-_]+@[a-z0-9\-_]+\.([a-z0-9\-_]+\.)*?[a-z]+$/is", $email) or $email=="" or strlen($email)>40) exit("$back и введите корректный E-mail адрес!"); if (isset($_POST['pol'])) $pol=$_POST['pol']; else $pol=""; if ($pol!="1") $pol="0"; $email=str_replace("|","I",$email); $activ="0"; $key=mt_rand(100000,999999); if ($activation==FALSE) { $key=""; $activ="1";} // КОЛДУЕМ рандомный КОД активации? если не требуется - обнуляем $rn=mt_rand(10000,99999); $tektime=time(); $pass=replacer($pass); $ps=md5("$pass"); $text="$rn|$tektime|$name|$ps|0|$email|$pol||0|||||||$key|$activ|"; $text=replacer($text); $exd=explode("|",$text); $name=$exd[2]; $email=$exd[5]; $ip=$_SERVER['REMOTE_ADDR']; // определяем IP юзера if ($name===$pass) exit("$back. В целях Вашей безопасности, запрещено равенство имени и пароля!"); // Ищем юзера с таким логином или емайлом $loginsm=strtolower($name); $lines=file("$datadir/user.php"); $i=count($lines); if ($i>"1") { do {$i--; $rdt=explode("|",$lines[$i]); $rdt[2]=strtolower($rdt[2]); if ($rdt[2]===$loginsm) {$bad="1"; $er="логином";} if ($rdt[5]===$email) {$bad="1"; $er="емайлом";} } while($i > 1); if (isset($bad)) exit("$back. Участник с таким $er уже зарегистрирован на форуме!"); } // отправка пользователю КОДА АКТИВАЦИИ $headers=null; // Настройки для отправки писем $headers.="From: robot форума <$adminemail>\n"; $headers.="X-Mailer: PHP/".phpversion()."\n"; $headers.="Content-type: text/plain; charset=windows-1251"; // Собираем всю информацию в теле письма if ($activation==TRUE) { $allmsg=$forum_name.' (подтверждение регистрации)'.chr(13).chr(10). 'Подтвердите регистрациию на форуме, для этого перейдите по ссылке: '.$forum_url.'tools.php?event=reg3&email='.$email.'&key='.$key.chr(13).chr(10). 'Ваше Имя: '.$name.chr(13).chr(10). 'Ваш пароль: '.$pass.chr(13).chr(10). 'Ваш E-mail: '.$email.chr(13).chr(10). 'Активационный ключ: '.$key.chr(13).chr(10).chr(13).chr(10). 'Сохраните письмо с паролем или запомните его.'.chr(13).chr(10). 'Пароли на форуме хранятся в зашифрованном виде, увидеть пароль невозможно.'.chr(13).chr(10). 'Для восстановления доступа к форуму Вам придётся воспользоваться системой восстановления пароля.'.chr(13).chr(10); } else { $allmsg=$forum_name.' (данные регистрации)'.chr(13).chr(10). 'Вы успешно зарегистрированы на форуме: '.$forum_url.chr(13).chr(10). 'Ваше Имя: '.$name.chr(13).chr(10). 'Ваш пароль: '.$pass.chr(13).chr(10). 'Ваш E-mail: '.$email.chr(13).chr(10); } // Отправляем письмо майлеру на съедение ;-) mail("$email", "=?windows-1251?B?" . base64_encode("$forum_name (подтверждение регистрации)") . "?=", $allmsg, $headers); sleep(1); // пауза 1 секунду, чтобы прошли оба письма if ($admin_send==TRUE) {mail("$adminemail", "=?windows-1251?B?" . base64_encode("$forum_name (Новый участник)") . "?=", $allmsg, $headers);} $file=file("$datadir/user.php"); $fp=fopen("$datadir/user.php","a+"); flock ($fp,LOCK_EX); fputs($fp,"$text\r\n"); fflush ($fp);//очищение файлового буфера flock ($fp,LOCK_UN); fclose($fp); // Записываем строчку с именем в файл со статистикой $file=file("$datadir/userstat.dat"); $fp=fopen("$datadir/userstat.dat","a+"); flock ($fp,LOCK_EX); fputs($fp,"$rn||$name|0||0|0|0|0||$ip||\r\n"); fflush ($fp);//очищение файлового буфера flock ($fp,LOCK_UN); fclose($fp); // ЕСЛИ АКТИВАЦИИ НЕ ТРЕБУЕТСЯ, то устанавливаем КУКИ if ($activation!=TRUE) { $tektime=time(); $wrfcookies="$name|$ps|$tektime|$tektime|"; setcookie("wrfcookies", $wrfcookies, time()+1728000); print"
$name, Вы успешно зарегистрированы.

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

ДАЛЬШЕ >>>
"; exit;} print"
$name, на указанный Вами емайл был выслан код подтверждения. Для того чтобы зарегистрироваться - введите его на странице, либо перейдите по ссылке - указанной в письме.

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

ДАЛЬШЕ >>>
"; exit; } // Регистрация ШАГ 3 - ввод ключа либо подтверждение по емайлу if ($_GET['event']=="reg3") { if (isset($_GET['email']) and isset($_GET['key'])) {$key=$_GET['key']; $email=$_GET['email'];} else { $frname=""; $frtname=""; include("$forum_skin/top.html"); addtop(); // подключаем ШАПКУ форума exit('
Подтверждение регистрации*

Ввод емайла и активационного ключа
Адрес e-mail:
Активационный ключ:
* Вы можете либо ввести емайл и ключ, который пришёл по почте, либо перейти по активационной ссылке в письме.
');} // защиты от взлома по ключу и емайлу if (strlen($key)<6 or strlen($key)>6 or !ctype_digit($key)) exit("$back. Вы ошиблись при вводе ключа. Ключ может содержать только 6 цифр."); $email=replacer($email); $email=str_replace("|","I",$email); $email=str_replace("\r\n","
",$email); if (strlen($email)>35) exit("Ошибка при вводе емайла"); // Ищем юзера с таким емайлом и ключом. Если есть - меняем статус на пустое поле. $fnomer=null; $email=strtolower($email); unset($fnomer); unset($ok); $lines=file("$datadir/user.php"); $ui=count($lines); $i=$ui; do {$i--; $rdt=explode("|",$lines[$i]); $rdt[5]=strtolower($rdt[5]); if ($rdt[5]===$email and $rdt[15]===$key) {$name=$rdt[2]; $pass=$rdt[3]; $fnomer=$i;} if ($rdt[5]===$email and $rdt[16]==TRUE) $ok="1"; } while($i > 1); if (isset($fnomer)) { // обновление строки юзера в БД $i=$ui; $dt=explode("|", $lines[$fnomer]); $txtdat="$dt[0]|$dt[1]|$dt[2]|$dt[3]|$dt[4]|$dt[5]|$dt[6]|$dt[7]|$dt[8]|$dt[9]|$dt[10]|$dt[11]|$dt[12]|$dt[13]|$dt[14]|noavatar.gif|1|"; $fp=fopen("$datadir/user.php","a+"); flock ($fp,LOCK_EX); ftruncate ($fp,0);//УДАЛЯЕМ СОДЕРЖИМОЕ ФАЙЛА for ($i=0;$i<=(sizeof($lines)-1);$i++) { if ($i==$fnomer) fputs($fp,"$txtdat\r\n"); else fputs($fp,$lines[$i]); } fflush ($fp); flock ($fp,LOCK_UN); fclose($fp); // устанавливаем КУКИ $tektime=time(); $wrfcookies="$name|$pass|$tektime|0|"; setcookie("wrfcookies", $wrfcookies, time()+1728000); } if (!isset($fnomer) and !isset($ok)) exit("$back. Вы ошиблись в воде активационного ключа или емайла.
"); if (isset($ok)) $add="Ваша запись уже активирована"; else $add="$name, Вы успешно зарегистрированы"; print"
Спасибо, $add.

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

ДАЛЬШЕ >>>
"; exit; } // Изменение данных регистрации - сохранение данных if ($_GET['event']=="reregist") { // if ($event =="reregist") if (!isset($_POST['name'])) exit("$back введите Ваше имя!"); $name=str_replace("|","I",$_POST['name']); if ($name=="" or strlen($name)>$maxname) exit("$back ваше имя пустое, или превышает $maxname символов!"); $name=trim($name); // Вырезает ПРОБЕЛьные символы if (preg_match("/[^(\\w)|(\\x7F-\\xFF)|(\\-)]/",$name)) exit("$back Ваше имя содержит запрещённые символы. Разрешены русские и английские буквы, цифры и подчёркивание!!."); if (!isset($_POST['pass'])) exit("$back Вы не ввели пароль!"); $oldpass=$_POST['oldpass']; // Старый пароль $pass=trim($_POST['pass']); if (strlen($_POST['newpassword'])<1 ) exit("$back разрешается длина пароля МИНИМУМ 1 символ!"); if ($_POST['newpassword']!="скрыт") {$pass=trim($_POST['newpassword']); if (strlen($pass)<1 or strlen($pass)>20) exit("$back Вы не ввели пароль. Пароль должен быть длиной от 1 до 20 символов!"); $pass=md5("$pass");} $pass=replacer($pass); $pass=str_replace("|","I",$pass); if (isset($_POST['email'])) $email=$_POST['email']; else $email=""; $email=strtolower($email); if(!preg_match("/^[a-z0-9\.\-_]+@[a-z0-9\-_]+\.([a-z0-9\-_]+\.)*?[a-z]+$/is", $email) or $email=="" or strlen($email)>40) exit("$back и введите корректный E-mail адрес!"); if (isset($_POST['dayx'])) $dayx=replacer($_POST['dayx']); else $dayx=""; if (isset($_POST['pol'])) $pol=replacer($_POST['pol']); else $pol=""; if ($pol!="1") $pol="0"; if (isset($_POST['icq'])) $icq=replacer($_POST['icq']); else $icq=""; if (isset($_POST['www'])) $www=replacer($_POST['www']); else $www=""; if (isset($_POST['about'])) $about=replacer($_POST['about']); else $about=""; if (isset($_POST['work'])) $work=replacer($_POST['work']); else $work=""; if (isset($_POST['write'])) $write=replacer($_POST['write']); else $write=""; if (isset($_POST['avatar'])) $avatar=replacer($_POST['avatar']); else $avatar=""; if ($_FILES['file']['name']!="") { // считываем имя и размер прикреплённого файла $fotoname=replacer($_FILES['file']['name']); $fotosize=$_FILES['file']['size']; // Имя и размер файла // A. Если имя файла длинее 20 символов 01.2014 if (strlen($fotoname)>25) $newfotoname=substr($fotoname,-24); else $newfotoname=$fotoname; } else {$newfotoname=$avatar; $fotoname=$avatar; $fotosize="";} $notgood="$back слишком длинное значение переменной "; if (strlen($dayx)>20) {$notgood.="день рождения!"; exit("$notgood");} if (strlen($icq)>10) {$notgood.="ICQ!"; exit("$notgood");} if (strlen($www)>75) {$notgood.="URL сайта!"; exit("$notgood");} if (strlen($about)>75) {$notgood.="откуда!"; exit("$notgood");} if (strlen($work)>75) {$notgood.="интересы!"; exit("$notgood");} if (strlen($write)>120) {$notgood.="подпись!"; exit("$notgood");} $email=str_replace("|","I",$email); $dayx=str_replace("|","I",$dayx); $icq=str_replace("|","I",$icq); $www=str_replace("|","I",$www); $about=str_replace("|","I",$about); $work=str_replace("|","I",$work); $write=str_replace("|","I",$write); $avatar=str_replace("|","I",$avatar); // проверка Логина/Старого пароля $ok=null; $lines=file("$datadir/user.php"); $i=count($lines); unset($ok); do {$i--; $rdt=explode("|", $lines[$i]); if (strtolower($name)===strtolower($rdt[2]) & $oldpass===$rdt[3]) $ok="$i"; // Ищем юзера логин/пароль else { if ($email===$rdt[5]) $bademail="1"; } // Вдруг у когото уже есть такой емайл? } while($i > "1"); if (isset($bademail)) exit("$back. Участник с емайлом $email уже зарегистрирован на форуме!"); if (!isset($ok)) {setcookie("wrfcookies","",time()); exit("$back Ваш новый логин /пароль / Емайл не совпадает НИ с одним из БД.

Смена электронного адреса Запрещена

Ошибка скрипта или попытка взлома - обратитесь к администратору!");} $udt=explode("|",$lines[$ok]); $dayreg=$udt[1]; $kolvomsg=$udt[4]; $status=$udt[16]; $rn=$udt[0]; // старый формат $text="$name|$pass|$kolvomsg|$email|$dayreg|$dayx|$pol|$icq|$www|$about|$work|$write|$fotoname|$status|"; $text="$rn|$dayreg|$name|$pass|$kolvomsg|$email|$pol|$dayx|0||$icq|$www|$about|$work|$write|$newfotoname|$status|"; $text=replacer($text); $exd=explode("|",$text); $name=$exd[2]; $pass=$exd[3]; $email=$exd[5]; // Ставим куку юзеру //$tektime=time(); $wrfcookies="$name|$pass|$tektime|$tektime|"; //setcookie("wrfcookies", $wrfcookies, time()+1728000); if ($fotoname!=$avatar and $fotoname!="") { // блок загрузки АВАТАРА // ЗАЩИТЫ от ВЗЛОМА // 1. Проверяем РАСШИРЕНИЕ $ext=strtolower(substr($fotoname, 1 + strrpos($fotoname, "."))); if (!in_array($ext, $valid_types)) {echo "ФАЙЛ НЕ загружен. Возможные причины:
- разрешена загрузка только файлов с такими расширениями: "; $patern=""; foreach($valid_types as $v) print"$v, "; print"
- Вы пытаетесь загрузить файл с двойным расширением;
- неверно введён адрес или выбран испорченный файл;
"; exit;} // 1. считаем кол-во точек в выражении - если большей одной - СВОБОДЕН! $findtchka=substr_count($fotoname, "."); if ($findtchka>1) exit("ТОЧКА встречается в имени файла $findtchka раз(а). Это ЗАПРЕЩЕНО!
\r\n"); // 2. если в имени есть .php, .html, .htm - свободен! $bag="Извините, но в имени ФАйла запрещено использовать .php, .html, .htm"; if (preg_match("/\.php/i",$fotoname)) exit("Вхождение .php найдено. $bag"); if (preg_match("/\.html/i",$fotoname)) exit("Вхождение .html найдено. $bag"); if (preg_match("/\.htm/i",$fotoname)) exit("Вхождение .htm найдено. $bag"); // 3. защищаем от РУССКИХ букв в имени файла и проверка РАСШИРЕНИЯ файла $patern=""; foreach($valid_types as $v) $patern.="$v|"; if (!preg_match("/^[a-z0-9\.\-_]+\.(".$patern.")+$/is",$fotoname)) exit("$fotoname -
Запрещено использовать РУССКИЕ буквы в имени файла, а также запрещено загружать файлы с расширением отличным от заданных!!"); // 4. Проверяем, может быть файл с таким именем уже есть на сервере if (file_exists("$filedir/$fotoname")) exit("

$back. Файл с таким именем уже существует на сервере! Либо измените имя на другое,
либо обновите страницу - возможно Вы пытаетесь добавить сообщение и файл повторно!!"); // 5. Размер в Кб. < допустимого $fotoksize=round($fotosize/10.24)/100; // размер ЗАГРУЖАЕМОГО ФОТО в Кб. $fotomax=round($max_f_size/10.24)/100; // максимальный размер фото в Кб. if ($fotoksize>$fotomax) exit("Вы превысили допустимый размер фото!
Максимально допустимый размер фото: $fotomax Кб.
Вы пытаетесь загрузить изображение: $fotoksize Кб!"); // 6. "Габариты" аватара > 150 х 150 - ДО свиданья! :-) $size=getimagesize($_FILES['file']['tmp_name']); if ($size[0]>150 or $size[1]>150) exit("Не допустимые габариты аватара. Допустимо лишь 150 х 150 px!"); $ft=$_FILES['file']['tmp_name']; if ($fotosize>"0" and $fotosize<$max_f_size) { copy($_FILES['file']['tmp_name'], $avatardir."/".$newfotoname); $name.=". Фото УСПЕШНО загружено: $fotoname (Размер: $fotosize байт)";} else exit("Файл НЕ ЗАГРУЖЕН - ошибка СЕРВЕРА! если вы видите сообщение - [function.getimagesize]: Filename cannot be empty, значит у Вас библиотека GD отсутствует, либо старой версии
Иначе, доступ на папку для загрузки выставлен ошибочно, или по условиям хостинга загрузка файлов через http Вам запрещена! Обратитесь к администратору!"); } // КОНЕЦ блока загрузки аватара $file=file("$datadir/user.php"); $fp=fopen("$datadir/user.php","a+"); flock ($fp,LOCK_EX); ftruncate ($fp,0);//УДАЛЯЕМ СОДЕРЖИМОЕ ФАЙЛА for ($i=0;$i< sizeof($file);$i++) { if ($ok!=$i) fputs($fp,$file[$i]); else fputs($fp,"$text\r\n"); } fflush ($fp);//очищение файлового буфера flock ($fp,LOCK_UN); fclose($fp); print"
Спасибо, $name.
Ваши данные успешно изменены
.

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

ДАЛЬШЕ >>>
"; exit; } if ($_GET['event'] =="givmepassword") { // отсылает утеряные данные на мыло // защита от злостного хакера if (!isset($_POST['myemail']) or !isset($_POST['myname'])) exit("Из формы НЕ поступили данные!"); $myemail=strtolower($_POST['myemail']); $myemail=replacer($myemail); $myname =strtolower($_POST['myname']); $myname =replacer($myname); if (strlen($myemail)>40 or strlen($myname)>40) exit("Длина имени или емайл должна быть менее 40 символов!"); // ГЕНЕРИРУЕМ новый пароль юзера $len=8; // количество символов в новом пароле $base='ABCDEFGHKLMNPQRSTWXYZabcdefghjkmnpqrstwxyz123456789'; $max=strlen($base)-1; $pass=''; mt_srand((double)microtime()*1000000); while (strlen($pass)<$len) $pass.=$base{mt_rand(0,$max)}; $lines=file("$datadir/user.php"); $record="\r\n"; $itogo=count($lines); $i=1; $regenter=FALSE; do {$rdt=explode("|",$lines[$i]); // проходим по всем пользователям и сверяем данные if (isset($rdt[1])) { // Если строчка потерялась в скрипте (пустая строка) - то просто её НЕ выводим $rdt[5]=strtolower($rdt[5]); $rdt[2]=strtolower($rdt[2]); if ($myemail===$rdt[5] or $myname===$rdt[2]) {$regenter=TRUE; $myemail=$rdt[5]; $myname=$rdt[2]; $passmd5=md5("$pass"); $lines[$i]=str_replace("$rdt[3]","$passmd5",$lines[$i]);} } //if isset $record.=$lines[$i]; $i++; } while($i < $itogo); // узнаём IP-запрашивающего пароль $ip=""; $ip=(isset($_SERVER['REMOTE_ADDR']))?$_SERVER['REMOTE_ADDR']:0; // переписываем файл участников - вставляем туда новый пароль $fp=fopen("$datadir/user.php","a+"); flock ($fp,LOCK_EX); ftruncate ($fp,0); fputs($fp,"$record"); fflush ($fp); flock ($fp,LOCK_UN); fclose($fp); // отправка пользователю его имени и пароля на мыло if ($regenter==TRUE) { $headers=null; // Настройки для отправки писем $headers.="From: администратор <$adminemail>\n"; $headers.="X-Mailer: PHP/".phpversion()."\n"; $headers.="Content-Type: text/plain; charset=windows-1251"; // Собираем всю информацию в теле письма $allmsg=$forum_name.' (данные для восстановления доступа к форуму)'.chr(13).chr(10). 'Вы, либо кто-то другой с IP-адреса '.$ip.' запросили данные для восстановления доступа к форуму по адресу: '.$forum_url.chr(13).chr(10).chr(13).chr(10). 'Ваше Имя: '.$myname.chr(13).chr(10). 'Ваш новый пароль: '.$pass.chr(13).chr(10).chr(13).chr(10). 'Для входа на форум перейдите по ссылке и введите логин и НОВЫЙ ПАРОЛЬ: '.$forum_url.'?event=login'.chr(13).chr(10).chr(13).chr(10). 'Изменить Ваш пароль (только после того как войдёте) всегда можно на странице: '.$forum_url.'?event=profile&pname='.$myname.chr(13).chr(10).chr(13).chr(10). '* Это письмо сгенерировано роботом, отвечать на него не нужно.'.chr(13).chr(10); // Отправляем письмо майлеру на съедение ;-) mail("$myemail", "=?windows-1251?B?" . base64_encode("$forum_name (Данные для восстановления доступа к форуму)") . "?=", $allmsg, $headers); // если есть участник с введённым емайлом $msgtoopr="$myname, на Ваш электронный адрес выслано сообщение с именем и паролем доступа к форуму."; } // Если нет такого емайла в БД else $msgtoopr="Участника с таким емайлом или логином
на форуме не зарегистрировано!"; print "


$msgtoopr Через несколько секунд Вы будете автоматически перемещены на главную страницу. Если этого не происходит, нажмите здесь.



"; exit; } if ($_GET['event']=="moresmiles") { // ДОБАВЛЕНИЕ ВСЕХ смайлов из директории SMILE $lines=null; unset($lines); if (!is_dir("smile/")) exit("папка smile не существует."); $i=0; if ($handle=opendir("smile/")) { while (($file=readdir($handle)) !== false) if (!is_dir($file)) {$lines[$i]=$file; $i++;} closedir($handle); } if (!isset($lines)) exit("В папке smile НЕТ смайлов! Обратитесь к админу - пусть скинет."); $itogo=count($lines); $k=0; $text=null; print"
Дополнительные смайлы
"; do { $rdt=explode(".",$lines[$k]); if ($rdt[1]=="jpg" or $rdt[1]=="gif") {print"  ";} $k++; } while ($k<$itogo); exit("
Закрыть окно
P.S. Администратор! Чтобы здесь появились новые смайлы - просто закачай любые смайлы в папку".$forum_url."smile/");} // ----- Шапка для всех страниц форума if (isset($_COOKIE['wrfcookies'])) { $wrfc=$_COOKIE['wrfcookies']; $wrfc=htmlspecialchars($wrfc,ENT_COMPAT,"windows-1251"); $wrfc=stripslashes($wrfc); $wrfc=explode("|", $wrfc); $wrfname=$wrfc[0];$wrfpass=$wrfc[1];$wrftime1=$wrfc[2];$wrftime2=$wrfc[3]; if (time()>($wrftime1+50)) {$tektime=time();$wrfcookies="$wrfc[0]|$wrfc[1]|$tektime|$wrftime1";setcookie("wrfcookies", $wrfcookies, time()+1728000);}} else {unset($wrfname); unset($wrfpass);} // ----- $frname=""; $frtname=""; include("$forum_skin/top.html"); addtop(); // подключаем ШАПКУ форума if ($_GET['event'] =="deletemsg") { // УДАЛЕНИЕ СВОЕГО СООБЩЕНИЯ=10.08.2012 г. if (!isset($_GET['username']) or !isset($_GET['id'])) exit("В адресе должен прийти ID темы и имя участника! Попытка взлома."); $username=urldecode($_GET['username']); // РАСКОДИРУЕМ имя пользователя, пришедшее из GET-запроса. $id=replacer($_GET['id']); // получаем идентификатор темы if ((!ctype_digit($id)) or (strlen($id)!=7)) exit("$back. Попытка взлома! Идентификатор тема должен содержать только 7 цифр!"); $lines=file("$datadir/user.php"); $i=count($lines); $mlines="0"; $filname=null; // Сверяем имя и пароль в куках с именем и паролем в user.php do {$i--; $rdt=explode("|",$lines[$i]); if (isset($rdt[1])) { // Если строчка потерялась в скрипте (пустая строка) - то просто её НЕ выводим if ($username===$rdt[2]) { if (isset($wrfname) & isset($wrfpass)) { $wrfname=replacer($wrfname); $wrfpass=replacer($wrfpass); if ($wrfname===$rdt[2] & $wrfpass===$rdt[3]) { $mlines=file("$datadir/$id.dat"); $maxi=count($mlines)-1; $dt=explode("|",$mlines[$maxi]); // Если последнее сообщение в теме написал наш зареганный юзер, то удаляем последнее сообщение // иначе обнуляем строку и ничего не удалим далее if ($dt[8]==$username and $dt[6]==TRUE and $maxi>0) { $filname=$dt[13]; $zag=$dt[5]; unset($mlines[$maxi]); $maxi--;} else $mlines="0"; $i=1; } } } } } while($i > "1"); if ($mlines!="0") { if (is_file("$filedir/$filname")) unlink("$filedir/$filname"); // Удаялем прикреплённый файл $fp=fopen("$datadir/$id.dat","a+"); flock ($fp,LOCK_EX); ftruncate ($fp,0);//УДАЛЯЕМ СОДЕРЖИМОЕ ФАЙЛА for ($i=0;$i<=$maxi;$i++) fputs($fp,$mlines[$i]); fflush ($fp); flock ($fp,LOCK_UN); fclose($fp); // -1 к репе и -1 к сообщению юзера! $ufile="$datadir/userstat.dat"; $ulines=file("$ufile"); $ui=count($ulines)-1; $ulinenew=""; $fileadd=0; if ($filname!=null) $fileadd=$repaaddfile; // Если юзер удаляет файл, то ему ещё -Х в РЕПУ $tektime=time(); $ip=$_SERVER['REMOTE_ADDR']; // определяем IP юзера for ($i=0;$i<=$ui;$i++) {$udt=explode("|",$ulines[$i]); if ($udt[2]==$username) { // Ищем юзера по имени в файле userstat.dat $udt[6]--; $udt[7]=$udt[7]-$fileadd-$repaaddmsg; $ulines[$i]="$udt[0]|$tektime|$udt[2]|$udt[3]|$udt[4]|$udt[5]|$udt[6]|$udt[7]|$udt[8]|$udt[9]|$ip|$udt[11]|\r\n";} $ulinenew.="$ulines[$i]";} // Пишем данные в файл $fp=fopen("$ufile","w"); flock ($fp,LOCK_EX); fputs($fp,"$ulinenew"); fflush ($fp); flock ($fp,LOCK_UN); fclose($fp); // Записываем данные в файл REPA.DAT $repa=-$fileadd; $repa=$repa-$repaaddmsg; $pochemu="За удаление сообщения в теме $zag"; $fp=fopen("$datadir/repa.dat","a+"); flock ($fp,LOCK_EX); fputs($fp,"$tektime|$repa|$wrfname||$pochemu||||\r\n"); fflush ($fp); flock ($fp,LOCK_UN); fclose($fp); $rezult="было успешно удалено.";} else $rezult="НЕ БЫЛО УДАЛЕНО, ТАК КАК ОНО ЕДИНСТВЕННОЕ В ТЕМЕ!"; print "
Внимание, $username, Ваше сообщение $rezult

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

ДАЛЬШЕ >>>
"; exit; } if ($_GET['event']=="who") { // ПРОСМОТР УЧАСТНИКОВ // если незареган - не пускаем if (!isset($_COOKIE['wrfcookies'])) exit("$back
Доступ ограничен


Для просмотра данных пользователей необходимо зарегистрироваться.
"); $t1="row1"; $alllines=file("$datadir/user.php"); $allslines=file("$datadir/userstat.dat"); unset($alllines[0]); unset($allslines[0]); // Удаляем первую (служебную строку) $alllines=array_values($alllines); $allslines=array_values($allslines); $allmaxi=count($alllines); $i=0; $j=0; $flag=0; if (isset($_GET['pol'])) $pol=replacer($_GET['pol']); else $pol=""; if (isset($_GET['interes'])) $interes=replacer($_GET['interes']); else $interes=""; if (isset($_GET['url'])) $url=replacer($_GET['url']); else $url=""; if (isset($_GET['from'])) $from=replacer($_GET['from']); else $from=""; if (isset($_GET['repa'])) $repa=replacer($_GET['repa']); else $repa=""; if (isset($_GET['dayreg'])) $dayreg=replacer($_GET['dayreg']); else $dayreg=""; $tektime=time(); if($pol!="" or $interes!="" or $url!="" or $from!="" or $repa!="" or $dayreg!="") { do {$dt=explode("|",$alllines[$i]); $udt=explode("|",$allslines[$i]); // Если есть совпадение в строке - присваиваем флагу значение 1 if (strlen($repa)>0) {if ($udt[7]>$repa) $flag=1;} if (strlen($pol)>0) {if ($dt[6]==$pol) $flag=1;} //print"$dt[6]=$pol-$flag
"; if ($dayreg>0 and $dayreg<121) {$delta=$dt[1]+2592000*$dayreg; if ($delta<$tektime) $flag=1;} // месяц * dayreg if ($dt[13]!="" and $interes!="") {if (stristr($dt[13],$interes)) $flag=1;} if ($dt[11]!="" and $url!="") {if (stristr($dt[11],$url)) $flag=1;} if ($dt[12]!="" and $from!="") {if (stristr($dt[12],$from)) $flag=1;} // если было хоть одно соврадение, включаем участника в массив участников if ($flag==1) {$lines[$j]=$alllines[$i]; $slines[$j]=$allslines[$i]; $flag=0; $j++;} $i++; } while($i<$allmaxi); //print"
"; print_r($slines); print_r($lines); exit;

$fadd="&pol=$pol&interes=$interes&url=$url&from=$from&repa=$repa&dayreg=$dayreg";
} else {$fadd=""; $lines=$alllines; $slines=$allslines;} // если поиск не задан, сразу присваиваем массив

if (!isset($lines)) $maxi=0; else $maxi=count($lines);

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

print"
Фильтры: Интересам: Сайту: Откуда:

"; print""; if ($allmaxi=="0") {print""; } else { $fm=$uq*($page-1); if ($fm>$maxi) $fm=$maxi-$uq; //if ($fm<0) $fm=0; $lm=$fm+$uq; if ($lm>=$maxi) $lm=$maxi-1; if (isset($lines)) { do { $dt=explode("|",$lines[$fm]); $udt=explode("|",$slines[$fm]); $fm++; $num=$fm; if (isset($dt[1])) { // Если строчка ПУСТА, то просто её НЕ выводим $codename=urlencode($dt[2]); // Кодируем имя в СПЕЦФОРМАТ, для поддержки корректной передачи имени через GET-запрос. if (isset($wrfname)) {$wfn="$dt[2]"; $mls="";} else {$wfn="$dt[2]"; $mls="заблокировано";} if (strlen($dt[16])!=TRUE) $dt[16]="ожидание активации"; if ($dt[6]==TRUE) $add="polm.gif"; else $add="polg.gif"; $dt[1]=date("d.m.y",$dt[1]); $codename=urlencode($dt[2]); // СТАТУС здесь в userstat.dat или, в зависимости от репы, в $userstatus[$i] if (strlen($udt[9])>1) $status=$udt[9]; else { $si=0; for ($si=0;$si<8;$si++) if ($udt[7]>=$userrepa[$si]) $stp=$si; $status=$userstatus[$stp];} print""; if ($t1=="row1") $t1="row2"; else $t1="row1"; } // если строчка потерялась } while($fm <= $lm); } // if isset($lines) } // конец Если файл userdat.php пуст echo'
Ф Пол / Имя Статус Репа ЛС на Е-майл ПС на фруме Регистрация День рождения Интересы Сайт Откуда
Участников не зарегистрировано
$num $wfn $status $udt[7] ± $mls
$dt[1] $dt[7] $dt[13] $dt[11] $dt[12]

'; $maxi--; // формируем переменную $pageinfo - со СПИСКОМ СТРАНИЦ $pageinfo=""; $addpage=""; $maxpage=ceil(($maxi+1)/$uq); if ($page>$maxpage) $page=$maxpage; $pageinfo.="
Страницы:  "; if ($page>3 and $maxpage>5) $pageinfo.="1 ... "; $f1=$page+2; $f2=abs($page-2); if ($f2=="0") $f2=1; if ($page>=$maxpage-1) $f1=$maxpage; if ($maxpage<=5) {$f1=$maxpage; $f2=1;} for($i=$f2; $i<=$f1; $i++) { if ($page==$i) $pageinfo.="$i  "; else {if ($i!=1) $addpage="&page=$i"; $pageinfo.="$i  ";} } if ($page<=$maxpage-3 and $maxpage>5) $pageinfo.="... $maxpage"; $pageinfo.='
'; print "$pageinfo
Всего зарегистрировано участников - $allmaxi

";} if ($_GET['event'] =="profile") { // РЕДАКТИРОВАНИЕ ПРОФИЛЯ if (!isset($_GET['pname'])) exit("Попытка взлома."); $pname=urldecode($_GET['pname']); // РАСКОДИРУЕМ имя пользователif (!ctype_digit($userpn) or strlen($userpn)>4) exit("$back. Попытка взлома. Хакерам здесь не место!");я, пришедшее из GET-запроса. $lines=file("$datadir/user.php"); $i=count($lines); $use="0"; $userpn="0"; do {$i--; $rdt=explode("|", $lines[$i]); if (isset($rdt[1])) { // Если строчка потерялась в скрипте (пустая строка) - то просто её НЕ выводим if (strlen($rdt[16])=="6" and ctype_digit($rdt[16])) $rdt[16]="ожидание активации"; if ($pname===$rdt[2]) { $userpn=$i; // Считываем статистику сообщений/репы юзера $jfile="$datadir/userstat.dat"; $jlines=file("$jfile"); $uj=count($jlines)-1; $msjitogo=0; for ($j=1;$j<=$uj;$j++) {$udt=explode("|",$jlines[$j]); $msjitogo=$msjitogo+$udt[6]; if ($udt[2]==$rdt[2]) {$msguser=$udt[6]; $temaded=$udt[5]; $repa=$udt[7];}} if ($msjitogo==0) $msgaktiv=0; else $msgaktiv=round(10000*$msguser/$msjitogo)/100; $aktiv=$rdt[1]; $tekdt=time(); $aktiv=round(($tekdt-$aktiv)/86400); if ($aktiv<=0) $aktiv=1; $aktiv=round(100*$msguser/$aktiv)/100; $rdt[1]=date("d.m.Y г.",$rdt[1]); if (isset($wrfname) & isset($wrfpass)) { $wrfname=replacer($wrfname); $wrfpass=replacer($wrfpass); if ($rdt[6]==TRUE) $pol="мужчина"; else $pol="женщина"; if ($wrfname===$rdt[2] & $wrfpass===$rdt[3]) { print "
Регистрационные данные

"; print "
Регистрационная информация
Поля отмеченные * обязательны к заполнению, если не указано обратное
Имя участника:
Русские ники РАЗРЕШЕНЫ
$rdt[2]
Ваш пол:
$pol
Ваш пароль: * (если хотите сменить, то введите новый пароль, иначе оставьте как есть!)
Адрес e-mail: *
Введите существующий электронный адрес! Форум защищён от роботов-спамеров.
Дата регистрации:$rdt[1]
Репутация:
$repa [Посмотреть статистику изменения]
Активность:Тем создано: $temaded, всего сообщений: $msguser [$msgaktiv% от общего числа / $aktiv сообщений в сутки]
Персональные сообщения
"; $wrfname=strtolower($wrfname); if (is_file("data-pm/$wrfname.dat")) {$linespm=file("data-pm/$wrfname.dat"); $pmi=count($linespm); print" [$pmi сообщения в ПМ]";} else echo'сообщений нет'; print"
 
Немного о себе
День варенья:
Введите день рождения в формате: ДД.ММ.ГГГГГ, если не секрет.
Номер в ICQ:
Введите номер ICQ, если он у Вас есть.
Домашняя страничка:
Если у Вас есть домашняя или любимая страничка в Интернете, введите URL этой странички.
Откуда:
Введите место жительства (Страна, Область, Город).
Интересы:
Вы можете написать о ваших интересах
Подпись:
Введите Вашу подпись, не используйте HTML
Аватар:
Выберите автарар (картинку), которая будет отображаться рядом с вашим именем.
"; $images=null; unset($images); if (!is_file("avatars/$rdt[15]")) $rdt[15]="noavatar.gif"; $root=str_replace( '\\', '/', getcwd() ) . '/'; $dirtoopen=$root.'avatars'; if ( !($images=get_dir($dirtoopen,'*.{gif,png,jpeg,jpg}',GLOB_BRACE)) ) { $images=array(); $handle=opendir($dirtoopen); while ( false !== ($file=readdir($handle)) ) if (strstr($file,'.gif') || strstr($file,'.jpg')) $images[]=$file; closedir($handle); } $selecthtml =""; foreach ($images as $file) { if ($file==$rdt[15]) {$selecthtml .= '\n"; $currentface=$rdt[15];} else {$selecthtml .= '\n";} } print "
Загрузить свой АВАТАР:
Выберете локальный путь к Вашему аватару.
Разрешается использовать картинки:
- разрешение менее 150 х 150,
- расширением только gif, png, jpg или jpeg,
- размером менее $maxfsize Кб.
"; $use="1"; } if ($use!="1") { ////////////// Передалать строки со статусом!!!! и $rdt[1] - дата регистрации!!!!!!!!! //if (strlen($rdt[13])<2) $rdt[13]=$user_name; if (is_file("avatars/$rdt[15]")) $avpr="$rdt[15]"; else $avpr="noavatar.gif"; if ($rdt[6]==TRUE) $pol="мужчина"; else $pol="женщина"; print "
Профиль участника

Регистрационная информация
Имя участника:$rdt[2]
Репутация:
$repa [Оценить ±]
Активность:Тем создано: $temaded, всего сообщений: $msguser [$msgaktiv% от общего числа / $aktiv сообщений в сутки]
Отправить личное сообщение на e-mail:
Написать персональное сообщение (сюда на форум):
Дата регистрации:$rdt[1]
Статус:$rdt[13]
Пол:$pol
День Варенья:
$rdt[7]
Номер в ICQ:
$rdt[10]
Домашняя страничка:$rdt[11]
Откуда (Место жительства, город, страна.):$rdt[12]
Интересы:$rdt[13]
Подпись:$rdt[14]
Аватар:

"; $use="1";} } } } // if } while($i > "1"); if (!isset($wrfname)) exit("

Только зарегистрированные участники форума могут просматривать данные профиля!"); if ($use!="1") { // в БД такого ЮЗЕРА НЕТ - его админ удалил print"
Пользователь НЕ ЗАРЕГИСТРИРОВАН
Уважаемый посетитель!

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

Скорее всего, его удалил администратор.

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

Перейти на главную страницу форума можно по этой ссылке
"; } } if ($_GET['event']=="reg") { if (!isset($_POST['rulesplus'])) { echo'
Правила и условия регистрации

Правила работы с форумом
'; if (is_file("$datadir/pravila.html")) include"$datadir/pravila.html"; echo'
Я ознакомился с правилами и условиями, и принимаю их.
'; } else { print"
Регистрация на форуме

"; if ($antispam==TRUE) {echo'
Регистрационная информация
Имя участника:
Разрешено использовать только русские, латинские буквы, цифры и знак подчёркивания
Ваш пароль:
Адрес e-mail:
Введите существующий электронный адрес! На Ваш емайл будет отправлено сообщение с кодом активации.
Ваш пол:
мужчина   женщина
Защитный код'; nospam();} // АНТИСПАМ ! echo'
* Все поля обязательны к заполнению
** Ваш пароль будет также отправлен на адрес электронной почты, который Вы определите
'; } } if ($_GET['event']=="find") { // ПОИСК $minfindme="3"; //минимальное кол-во символов в слове для поиска echo'
'; print"
Поиск
Запрос: Тип: С учётом РЕГИСТРА
ИЛИ найти все сообщения зарегистрированного пользователя:
Язык запросов:
  • "И" - должны присутствовать оба слова;

  • "ИЛИ" - есть ХОТЯ БЫ одно из слов;

  • "Вся фраза целиком" - в искомом документе ищите фразу на 100% соответствующую вашему запросу;


  • "С учётом РЕГИСТРА" - поиск ведётся с учётом введённого ВАМИ РЕГИСТРА;


Скрипт ищет все данные, которые начинаются с введенной вами строки. Например, при запросе "форум" будут найдены слова "форум", "форумы", "форумом" и многие другие.


'; print "Ограничение на поиск:
- минимальное кол-во символов: $minfindme"; } if (isset($_GET['find'])) { //exit("Поиск временно не работает!"); $minfindme="2"; //минимальное кол-во символов в слове для поиска $time=explode(' ', microtime()); $start_time=$time[1]+$time[0]; // считываем начальное время запуска поиска $gdefinder="1"; $ftype=$_POST['ftype']; if (!ctype_digit($ftype) or strlen($ftype)>2) exit("$back. Попытка взлома. Хакерам здесь не место."); if (!isset($_POST['withregistr'])) $withregistr="0"; else $withregistr="1"; if ($_POST['user']!="0") {$findme=$_POST['user']; $gdefinder="3"; $ftype="2"; $withregistr="1";} // Если выбран поиск по имени юзера else $findme=$_POST['findme']; $findme=replacer($findme); // Защита от взлома $findmeword=explode(" ",$findme); // Разбиваем $findme на слова $wordsitogo=count($findmeword); $findme=trim($findme); // Вырезает ПРОБЕЛьные символы if ($findme == "" || strlen($findme) < $minfindme) exit("$back Ваш запрос пуст, или менее $minfindme символов!"); // Открываем файл с темами формума и запоминаем имена файлов с сообщениями setlocale(LC_ALL,'ru_RU.CP1251'); // ! РАЗРЕШАЕМ РАБОТУ ФУНКЦИЙ, работающих с регистором и с РУССКИМИ БУКВАМИ // ПЕРВЫЙ цикл - считаем кол-во форумов (записываем в переменную $itogofid) $mainlines=file("$datadir/wrforum.dat");$i=count($mainlines); $itogofid="0";$number="0"; $oldid="0"; $nump="0"; do {$i--; $dt=explode("|",$mainlines[$i]); if ($dt[3]==FALSE) { $maxzd=$dt[9]; if (!ctype_digit($maxzd)) $maxzd=0; // считываем ЗВЁЗДы раздела из файла if ($maxzd<1) {$itogofid++; $fids[$itogofid]=$dt[2]; }} // $itogofid - общее кол-во форумов } while($i > "0"); // ВТОРОЙ цикл - открываем файл с топиком (если он существует) и сохраняем в переменную $topicsid все имена тем do { $fid=$fids[$itogofid]; if (is_file("$datadir/$fid.dat")) { $msglines=file("$datadir/$fid.dat"); unset($topicsid); if (count($msglines)>0) { $lines=file("$datadir/$fid.dat"); $i=count($lines); do {$i--; $dt=explode("|",$lines[$i]); $topicsid[$i]="$dt[2]$dt[3]";} while($i > "0"); } // ТРЕТИЙ цикл - последовательно открываем каждую тему if (isset($topicsid)) { $ii=count($topicsid); do {$ii--; $id=str_replace("\r\n","",$topicsid[$ii]); if (is_file("$datadir/$id.dat")) { // Если файл есть? Бывает, что файлы с сообщениями бьются, тогда при пересчёте они удаляются. $file=file("$datadir/$id.dat"); $iii=count($file); // ЧЕТВЁРТЫЙ цикл - последовательно ищем в каждой теме искомое сообщение if ($iii>0) { // если файл с сообщениями НЕ ПУСТОЙ do {$iii--; $lines=file("$datadir/$id.dat"); $dt=explode("|", $lines[$iii]); if (!isset($dt[4])) $dt[4]=" "; if ($gdefinder=="0") {$msgmass=array($dt[2],$dt[3],$dt[4]); $gi="3"; $add="ях Автор, Текст, Заголовок ";} if ($gdefinder=="1") {$msgmass=array($dt[14]); $gi="1"; $add="е Текст ";} if ($gdefinder=="2") {$msgmass=array($dt[3],$dt[4]); $gi="2"; $add="ях Текст и Заголовок ";} if ($gdefinder=="3") {$msgmass=array($dt[8]); $gi="1"; $add="е Автор ";} if ($gdefinder=="4") {$msgmass=array($dt[3]); $gi="1"; $add="е Заголовок ";} // Цикл по местам поиска (0,1,2,3,4) do {$gi--; $msg=$dt[14]; $msdat=$msgmass[$gi]; $stroka="0"; $wi=$wordsitogo; // ЦИКЛ по КАЖДОМУ слову запроса ! do {$wi--; // БЛОК УСЛОВИЙ ПОИСКА if ($withregistr!="1") // регистронезависимый поиск - cимвол "i" после закрывающего ограничителя шаблона - / { if ($ftype=="2") { if (stristr($msdat,$findme)) // ПОИСК по "ВСЕЙ ФРАЗЕ ЦЕЛИКОМ" БЕЗ учёта регистра { $stroka++; $msg=str_replace($findme," $findme ",$msg); } } else { $str1=strtolower($msdat); $str2=strtolower($findmeword[$wi]); if ($str2!="" and strlen($str2) >= $minfindme) { if (stristr($str1,$str2)) // ПОИСК БЕЗ учёта регистра при равных прочих условиях { $stroka++; $msg=str_replace($findmeword[$wi]," $findmeword[$wi] ",$msg); } } } } else // if ($withregistr!="1") { if ($ftype=="2") { if (strstr($msdat,$findme)) // ПОИСК по "ВСЕЙ ФРАЗЕ ЦЕЛИКОМ" C учёта РЕГИСТРА { $stroka++; $msg=str_replace($findme," $findme ",$msg); } } else { if ($msdat!="" and strlen($findmeword[$wi]) >= $minfindme) { if (strstr($msdat,$findmeword[$wi])) // ПОИСК С учётом РЕГИСТРА при равных прочих условиях { $stroka++; $msg=str_replace($findmeword[$wi]," $findmeword[$wi] ",$msg); } } } } // if ($withregistr!="1") } while($wi > "0"); // конец ЦИКЛа по КАЖДОМУ слову запроса // Подготавливаем результирующее сообщение, и если результат соответствует условиям - выводим его if ($ftype=="0") { if ($stroka==$wordsitogo) $printflag="1"; } if ($ftype=="1") { if ($stroka>"0") $printflag="1"; } if ($ftype=="2") { if ($stroka==$wordsitogo) $printflag="1"; } if (!isset($printflag)) $printflag="0"; if ($printflag=="1") { $msg=str_replace("
", "   ", $msg); // заменяем в сообщении
на пару пробелов if (strlen($msg)>150) { $ma=strpos($msg,""); if ($ma > 50) $ma=$ma-50; else $ma=0; $mb=strrpos($msg,">b/<"); if (($mb+50) > strlen($msg)) $mb=strlen($msg); else $mb=$mb+50; $msgtowrite="..."; $msgtowrite.=substr($msg,$ma,$mb); $msgtowrite.="..."; $msgtowrite=substr($msg,0,400); } else $msgtowrite=$msg; if (!isset($m)) { print"
По запросу '$findme' в пол$add найдено:

Повторить поиск по сообщению
Запрос:

"; $m="1"; } $in=$iii+1; if ($in>$msg_onpage) {$page=ceil($in/$msg_onpage);} else $page="1"; // расчитываем верную страницу и номер сообщения if ($oldid!=$id and $number<100) { $number++; $msgnumber=$iii; if ($nump>1) $anp="$nump"; else $anp="1"; if ($number>1) print""; $msg=$msgtowrite; // Убираем спец код из строки поиска $msg=str_replace("&","&",$msg); $msg=str_replace('\"','"',$msg); $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("
","\r\n", $msg); $msg=str_replace("&lt;br&gt;","

", $msg); print ""; $printflag="0"; $nump="0"; } else $nump++; if ($number>=100) { print"
Заголовокчасть сообщенияСовпадений
в теме
$anp
$number $dt[5] $msg
* поиск останавливается, при нахождении более 100 вхождений!"; $gi=0; $iii=0; $ii=0; $itogofid=0;} $oldid=$id; } // if $printflag==1 } while($gi > "0"); // конец ЦИКЛа по МЕСТУ поиска } while($iii > "0"); } // если файл с сообщениями НЕПУСТОЙ } // if is_file("$datadir/$id.dat") } while($ii > "0"); } // if isset($topicsid) } // if файл $fid.dat НЕ пуст $itogofid--; } while($itogofid > "0"); if (!isset($m)) echo'
По вашему запросу ничего не найдено.
'; $time=explode(' ',microtime()); $seconds=($time[1]+$time[0]-$start_time); echo "

".str_replace("%1", sprintf("%01.3f", $seconds), "Время поиска: %1 секунд.")."

"; } } // if isset($_GET['event']) - всё, что делается при наличии переменной $event ?>
Powered by WR-Forum Professional © 2.1