'; if ($wrfname!=null) { $codename=urlencode($wrfname); // Кодируем имя в СПЕЦФОРМАТ, для поддержки корректной передачи имени через GET-запрос. print "Ваш профиль  Выход [$wrfname]";} else {print " Регистрация   Вход";} if (is_file("$fskin/tiptop.html")) include("$fskin/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 nospam() { global $max_key,$rand_key; // Функция АНТИСПАМ 2011 ! 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=#EEEEEE'; if ($nummax<3) { if ($secret==1 or $i==0) {$styles='bgcolor=#FFFF00'; $xkey=$xkey.$snum[$i]; $nummax++;}} echo "\r\n";} $xkey=md5("$xkey+$rand_key+$dopkod"); //число + ключ из config.php + код меняющийся кажые 24 часа print"
Защитный код:\n (введите цифры, которые на жёлтом фоне)
"; 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;} // ВСЁ, что делается при наличии переменной $_GET['event'] if(isset($_GET['event'])) { if ($_GET['event']=="login") { // ВХОД на форум УЧАСТНИКОМ $frname="Вход на форум .:. "; $frtname=""; include("$fskin/top.html"); addtop(); // подключаем ШАПКУ форума echo '



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



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





'; exit;} // РЕПУТАЦИЯ - окно выбора: шаг 1 if ($_GET['event']=="repa") { if (!isset($_GET['name'])) exit("Нет данных переменной name."); if (!isset($_GET['who'])) exit("Нет данных переменной who."); $name=replacer($_GET['name']); $userpn=replacer($_GET['who']); if (!ctype_digit($userpn) or strlen($userpn)>4) exit("$back. Попытка взлома. Хакерам здесь не место!"); // Если куков нет - облом, если куки есть и равны имени юзера - облом. if (!isset($_COOKIE['wrfcookies'])) exit("Изменение РЕПУТАЦИИ



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

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


* Данное письмо сгенерировано и отправлено роботом, отвечать на него не нужно. "; mail("$uemail", "Сообщение от посетителя форума ($fname) от $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/usersdat.php"); $i=count($lines); $regenter=FALSE; $pass=md5("$pass"); do {$i--; $rdt=explode("|",$lines[$i]); if (isset($rdt[1])) { // Если строчка НЕ ПУСТА if ($name===strtolower($rdt[0]) & $pass===$rdt[1]) { if (strlen($rdt[13])>1 and ctype_digit($rdt[13])) exit("$back. Ваша учётная запись не активирована. Для активации Вам необходимо перейти по ссылке, которая должна прийти Вам на емайл."); $regenter=TRUE; $tektime=time(); $wrfcookies="$rdt[0]|$rdt[1]|$tektime|$tektime|"; setcookie("wrfcookies", $wrfcookies, time()+1728000); }} // if-ы } while($i > "1"); if ($regenter==FALSE) exit("$back Ваш данные НЕ верны!"); Header("Location: index.php"); } // Регистрация НОВЫЙ ШАГ 2!! отправка на мыл подтверждения и сохранение в БД if ($_GET['event']=="regnext") { 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("введён ОШИБОЧНЫЙ код!");} 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(substr( $email, -2, 2)=="pl"||substr( $email, -3, 3)=="com"||substr( $email, -6, 6)=="qip.ru") exit("Кышь, спаммер, брысь отседова!
$back и введите корректный E-mail адрес!"); if (isset($_POST['pol'])) $pol=$_POST['pol']; else $pol=""; if ($pol!="мужчина") $pol="женщина"; $email=str_replace("|","I",$email); $key=mt_rand(100000,999999); if ($useactkey!="1") $key=""; // КОЛДУЕМ рандомный КОД активации? если не требуется - обнуляем $pass=replacer($pass); $ps=md5("$pass"); $text="$name|$ps|0|$email|$dayreg||$pol||||||noavatar.gif|$key|"; $text=replacer($text); $exd=explode("|",$text); $name=$exd[0]; $email=$exd[3]; if ($name===$pass) exit("$back. В целях Вашей безопасности, запрещено равенство имени и пароля!"); // Ищем юзера с таким логином или емайлом $loginsm=strtolower($name); $lines=file("$datadir/usersdat.php"); $i=count($lines); if ($i>"1") { do {$i--; $rdt=explode("|",$lines[$i]); $rdt[0]=strtolower($rdt[0]); if ($rdt[0]===$loginsm) {$bad="1"; $er="логином";} if ($rdt[3]===$email) {$bad="1"; $er="емайлом";} } while($i > 1); if (isset($bad)) exit("$back. Участник с таким $er уже зарегистрирован на форуме!"); } // отправка пользователю КОДА АКТИВАЦИИ $headers=null; // Настройки для отправки писем $headers.="From: $name <$email>\n"; $headers.="X-Mailer: PHP/".phpversion()."\n"; $headers.="Content-type: text/plain; charset=windows-1251"; // Собираем всю информацию в теле письма if ($useactkey==TRUE) { $allmsg=$fname.' (подтверждение регистрации)'.chr(13).chr(10). 'Подтвердите регистрациию на форуме, для этого перейдите по ссылке: '.$furl.'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=$fname.' (данные регистрации)'.chr(13).chr(10). 'Вы успешно зарегистрированы на форуме: '.$furl.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("$fname (подтверждение регистрации)") . "?=", $allmsg, $headers); if ($sendadmin==TRUE) {mail("$adminemail", "=?windows-1251?B?" . base64_encode("$fname (Новый участник)") . "?=", $allmsg, $headers);} $file=file("$datadir/usersdat.php"); $fp=fopen("$datadir/usersdat.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,"$name|0|0|0|0|||\r\n"); fflush ($fp);//очищение файлового буфера flock ($fp,LOCK_UN); fclose($fp); if ($useactkey!=TRUE) { $tektime=time(); $wrfcookies="$name|$pass|$tektime|0|"; 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("$fskin/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($key)>30) exit("Ошибка при вводе емайла"); // Ищем юзера с таким емайлом и ключом. Если есть - меняем статус на пустое поле. $fnomer=null; $email=strtolower($email); unset($fnomer); unset($ok); $lines=file("$datadir/usersdat.php"); $ui=count($lines); $i=$ui; do {$i--; $rdt=explode("|",$lines[$i]); $rdt[3]=strtolower($rdt[3]); if ($rdt[3]===$email and $rdt[13]===$key) {$name=$rdt[0]; $pass=$rdt[1]; $fnomer=$i;} if ($rdt[3]===$email and $rdt[13]==="") $ok="1"; } while($i > 1); if (isset($fnomer)) { // обновление строки юзера в БД $i=$ui; $dt=explode("|", $lines[$fnomer]); $txtdat="$dt[0]|$dt[1]|$dt[2]|$dt[3]|$dt[4]|$dt[5]|$dt[6]|$dt[7]|$dt[8]|$dt[9]|$dt[10]|$dt[11]|$dt[12]||"; $fp=fopen("$datadir/usersdat.php","a+"); flock ($fp,LOCK_EX); ftruncate ($fp,0);//УДАЛЯЕМ СОДЕРЖИМОЕ ФАЙЛА for ($i=0;$i<=(sizeof($lines)-1);$i++) { if ($i==$fnomer) fputs($fp,"$txtdat\r\n"); else fputs($fp,$lines[$i]); } fflush ($fp); flock ($fp,LOCK_UN); fclose($fp); // устанавливаем КУКИ $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!="мужчина") $pol="женщина"; 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']; // Имя и размер файла } else {$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)>75) {$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/usersdat.php"); $i=count($lines); unset($ok); do {$i--; $rdt=explode("|", $lines[$i]); if (strtolower($name)===strtolower($rdt[0]) & $oldpass===$rdt[1]) $ok="$i"; // Ищем юзера логин/пароль else { if ($email===$rdt[3]) $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[4]; $kolvomsg=$udt[2]; $status=$udt[13]; $text="$name|$pass|$kolvomsg|$email|$dayreg|$dayx|$pol|$icq|$www|$about|$work|$write|$fotoname|$status|"; $text=replacer($text); $exd=explode("|",$text); $name=$exd[0]; $pass=$exd[1]; $email=$exd[3]; // Ставим куку юзеру //$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_file_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!"); if ($fotosize>"0" and $fotosize<$max_file_size) { copy($_FILES['file']['tmp_name'], $avatardir."/".$fotoname); print "

Фото УСПЕШНО загружено: $fotoname (Размер: $fotosize байт)";} else exit("Файл НЕ ЗАГРУЖЕН - ошибка СЕРВЕРА! если вы видите сообщение - [function.getimagesize]: Filename cannot be empty, значит у Вас библиотека GD отсутствует, либо старой версии
Иначе, доступ на папку для загрузки выставлен ошибочно, или по условиям хостинга загрузка файлов через http Вам запрещена! Обратитесь к администратору!"); } // КОНЕЦ блока загрузки аватара $file=file("$datadir/usersdat.php"); $fp=fopen("$datadir/usersdat.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/usersdat.php"); $record="\r\n"; $itogo=count($lines); $i=1; $regenter=FALSE; do {$rdt=explode("|", $lines[$i]); // проходим по всем пользователям и сверяем данные if (isset($rdt[1])) { // Если строчка потерялась в скрипте (пустая строка) - то просто её НЕ выводим $rdt[3]=strtolower($rdt[3]); $rdt[0]=strtolower($rdt[0]); if ($myemail===$rdt[3] or $myname===$rdt[0]) {$regenter=TRUE; $myemail=$rdt[3]; $myname=$rdt[0]; $passmd5=md5("$pass"); $lines[$i]=str_replace("$rdt[1]","$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/usersdat.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=$fname.' (данные для восстановления доступа к форуму)'.chr(13).chr(10). 'Вы, либо кто-то другой с IP-адреса '.$ip.' запросили данные для восстановления доступа к форуму по адресу: '.$furl.chr(13).chr(10).chr(13).chr(10). 'Ваше Имя: '.$myname.chr(13).chr(10). 'Ваш новый пароль: '.$pass.chr(13).chr(10).chr(13).chr(10). 'Для входа на форум перейдите по ссылке и введите логин и НОВЫЙ ПАРОЛЬ: '.$furl.'?event=login'.chr(13).chr(10).chr(13).chr(10). 'Изменить Ваш пароль (только после того как войдёте) всегда можно на странице: '.$furl.'?event=profile&pname='.$myname.chr(13).chr(10).chr(13).chr(10). '* Это письмо сгенерировано роботом, отвечать на него не нужно.'.chr(13).chr(10); // Отправляем письмо майлеру на съедение ;-) mail("$myemail", "=?windows-1251?B?" . base64_encode("$fname (Данные для восстановления доступа к форуму)") . "?=", $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. Администратор! Чтобы здесь появились новые смайлы - просто закачай любые смайлы в папку $forurl/smile/");} // ----- Шапка для всех страниц форума if (isset($_COOKIE['wrfcookies'])) { $wrfc=$_COOKIE['wrfcookies']; $wrfc=htmlspecialchars($wrfc); $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("$fskin/top.html"); addtop(); // подключаем ШАПКУ форума if ($_GET['event'] =="deletemsg") { // УДАЛЕНИЕ СВОЕГО СООБЩЕНИЯ if (!isset($_GET['username']) or !isset($_GET['id'])) exit("В адресе должен прийти ID темы и имя участника! Попытка взлома."); $username=urldecode($_GET['username']); // РАСКОДИРУЕМ имя пользователя, пришедшее из GET-запроса. $id=$_GET['id']; // получаем идентификатор темы $lines=file("$datadir/usersdat.php"); $i=count($lines); $mlines="0"; // Сверяем имя и пароль в куках с именем и паролем в usersdat.php do {$i--; $rdt=explode("|", $lines[$i]); if (isset($rdt[1])) { // Если строчка потерялась в скрипте (пустая строка) - то просто её НЕ выводим if ($username===$rdt[0]) { if (isset($wrfname) & isset($wrfpass)) { $wrfname=replacer($wrfname); $wrfpass=replacer($wrfpass); if ($wrfname===$rdt[0] & $wrfpass===$rdt[1]) { $mlines=file("$datadir/$id.dat"); $maxi=count($mlines)-1; $dt=explode("|",$mlines[$maxi]); // Если последнее сообщение в теме написал наш зареганный юзер, то удаляем последнее сообщение // иначе обнуляем строку и ничего не удалим далее if ($dt[0]==$username and $dt[1]=="да" and $maxi>0) { unset($mlines[$maxi]); $maxi--;} else $mlines="0"; $i=1; } } } } } while($i > "1"); if ($mlines!="0") { $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); $rezult="было успешно удалено.";} else $rezult="НЕ БЫЛО УДАЛЕНО, ТАК КАК ОНО ЕДИНСТВЕННОЕ В ТЕМЕ!"; print "
Внимание, $username, Ваше сообщение $rezult

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

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



Доступ ограничен


Для просмотра данных пользователей необходимо зарегистрироваться.


$back

"); $t1="row1"; $alllines=file("$datadir/usersdat.php"); $allmaxi=count($alllines)-1; $i=1; $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($pol!="" or $interes!="" or $url!="" or $from!="") { do {$dt=explode("|", $alllines[$i]); // Если есть совпадение в строке - присваиваем флагу значение 1 if ($dt[6]!="" and $pol!="") {if (stristr($dt[6],$pol)) $flag=1;} // если строка НЕ пуста if ($dt[10]!="" and $interes!="") {if (stristr($dt[10],$interes)) $flag=1;} if ($dt[8]!="" and $url!="") {if (stristr($dt[8],$url)) $flag=1;} if ($dt[9]!="" and $from!="") {if (stristr($dt[9],$from)) $flag=1;} // если было хоть одно соврадение, включаем участника в массив участников if ($flag==1) {$lines[$j]=$alllines[$i]; $flag=0; $j++;} $i++; } while($i<$allmaxi); $fadd="&pol=$pol&interes=$interes&url=$url&from=$from"; } else {$fadd=""; $lines=$alllines;} // если поиск не задан, сразу присваиваем массив if (!isset($lines)) $maxi=0; else $maxi=count($lines)-1; print"
Фильтр по: Полу: Интересам: Сайту: Откуда:

"; echo''; if ($allmaxi=="0") {print""; } else { // Исключаем ошибку вызова несуществующей страницы if (!isset($_GET['page'])) $page=1; else { $page=$_GET['page']; if (!ctype_digit($page)) $page=1; if ($page<1) $page=1; } $maxpage=ceil(($maxi+1)/$uq); if ($page>$maxpage) $page=$maxpage; $fm=$uq*($page-1); if ($fm>$maxi) $fm=$maxi-$uq; $lm=$fm+$uq; if ($lm>$maxi) $lm=$maxi+1; if (isset($lines)) { do {$dt=explode("|", $lines[$fm]); $fm++; $num=$fm-1; if (isset($dt[1])) { // Если строчка ПУСТА, то просто её НЕ выводим $codename=urlencode($dt[0]); // Кодируем имя в СПЕЦФОРМАТ, для поддержки корректной передачи имени через GET-запрос. if (isset($wrfname)) {$wfn="$dt[0]"; $mls="";} else {$wfn="$dt[0]"; $mls="заблокировано";} if (strlen($dt[13])=="6" and ctype_digit($dt[13])) $dt[13]="ожидание активации"; if (strlen($dt[13])<2) $dt[13]=$users; if ($dt[6]=="мужчина") $add="polm.gif"; else $add="polg.gif"; print""; if ($t1=="row1") $t1="row2"; else $t1="row1"; } // если строчка потерялась } while($fm < $lm); } // if isset($lines) } // конец Если файл userdat.php пуст echo'
Имя Статус ЛС на Е-майл Регистрация День рождения Интересы Сайт Откуда
Участников не зарегистрировано
$num $wfn $dt[13] $mls $dt[4] $dt[5] $dt[10] $dt[8] $dt[9]

'; // формируем переменную $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']); // РАСКОДИРУЕМ имя пользователя, пришедшее из GET-запроса. $lines=file("$datadir/usersdat.php"); $i = count($lines); $use="0"; $userpn="0"; do {$i--; $rdt=explode("|", $lines[$i]); if (isset($rdt[1])) { // Если строчка потерялась в скрипте (пустая строка) - то просто её НЕ выводим if (strlen($rdt[13])=="6" and ctype_digit($rdt[13])) $rdt[13]="ожидание активации"; if ($pname===$rdt[0]) { $userpn=$i; // Считываем статистику сообщений/репы юзера $jfile="$datadir/userstat.dat"; $jlines=file("$jfile"); $uj=count($jlines)-1; $msjitogo=0; for ($j=0;$j<=$uj;$j++) {$udt=explode("|",$jlines[$j]); $msjitogo=$msjitogo+$udt[2]; if ($udt[0]==$rdt[0]) {$msguser=$udt[2]; $temaded=$udt[1]; $repa=$udt[3];}} $msgaktiv=round(10000*$msguser/$msjitogo)/100; $akt=explode(".",$rdt[4]); $aktiv=mktime(0,0,0,$akt[1],$akt[0],$akt[2]); $tekdt=mktime(); $aktiv=round(($tekdt-$aktiv)/86400); $aktiv=round(100*$msguser/$aktiv)/100; if (isset($wrfname) & isset($wrfpass)) { $wrfname=replacer($wrfname); $wrfpass=replacer($wrfpass); if ($wrfname===$rdt[0] & $wrfpass===$rdt[1]) { print "
Регистрационные данные

"; print "
Регистрационная информация
Поля отмеченные * обязательны к заполнению, если не указано обратное
Имя участника: *
Русские ники РАЗРЕШЕНЫ
$rdt[0]
Ваш пароль: * (если хотите сменить, то введите новый пароль, иначе оставьте как есть!)
Адрес e-mail: *
Введите существующий электронный адрес! Форум защищён от роботов-спамеров.
Репутация:
$repa [Посмотреть статистику изменения]
Активность:Тем создано: $temaded, всего сообщений: $msguser [$msgaktiv% от общего числа / $aktiv сообщений в сутки]
Персональные сообщения
"; if (is_file("data-pm/$wrfname.dat")) {$linespm=file("data-pm/$wrfname.dat"); $pmi=count($linespm); print" [$pmi сообщения в ПМ]";} else echo'сообщений нет'; print"
 
Немного о себе
Эта информация необязательна
Дата регистрации:$rdt[4]
Ваш пол:
$rdt[6]
День варенья:
Введите день рождения в формате: ДД.ММ.ГГГГГ, если не секрет.
Номер в ICQ:
Введите номер ICQ, если он у Вас есть.
Домашняя страничка:
Если у Вас есть домашняя или любимая страничка в Интернете, введите URL этой странички.
Откуда:
Введите место жительства (Страна, Область, Город).
Интересы:
Вы можете написать о ваших интересах
Подпись:
Введите Вашу подпись, не используйте HTML
Аватар:
Выберите автарар (картинку), которая будет отображаться рядом с вашим именем.
"; $images=null; unset($images); if (!is_file("avatars/$rdt[12]")) $rdt[12]="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[12]) {$selecthtml .= '\n"; $currentface = $rdt[12];} else {$selecthtml .= '\n";} } print "
Загрузить свой АВАТАР:
Введите локальный путь к Вашему аватару.
Разрешается использовать картинки:
- разрешение не более 120 х 120,
- расширением только gif, png, jpg или jpeg,
- размером менее $maxfsize Кб.
"; $use="1"; } if ($use!="1") { if (strlen($rdt[13])<2) $rdt[13]=$users; if (is_file("avatars/$rdt[12]")) $avpr="$rdt[12]"; else $avpr="noavatar.gif"; print "
Профиль участника

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

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

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

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

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

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

Перейти на главную страницу форума можно по этой ссылке
"; } } if ($_GET['event']=="reg") { // БЛОК РЕГИСТРАЦИИ пользователя if (!isset($_POST['okrules'])) { echo'
Правила и условия регистрации

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

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

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

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


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


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


'; print "Ограничение на поиск:
- минимальное кол-во символов: $minfindme"; } if (isset($_GET['find'])) { $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/mainforum.dat");$i=count($mainlines); $itogofid="0";$number="0"; $oldid="0"; $nump="0"; do {$i--; $dt=explode("|", $mainlines[$i]); if ($dt[1]!="razdel") { $maxzd=$dt[12]; if (!ctype_digit($maxzd)) $maxzd=0; } // считываем ЗВЁЗДы раздела из файла if ($dt[1]!="razdel" and $maxzd<1) {$itogofid++; $fids[$itogofid]=$dt[0];} // $itogofid - общее кол-во форумов } while($i > "0"); // ВТОРОЙ цикл - открываем файл с топиком (если он существует) и сохраняем в переменную $topicsid все имена тем do { $fid=$fids[$itogofid]; if (is_file("$datadir/topic$fid.dat")) { $msglines=file("$datadir/topic$fid.dat"); unset($topicsid); if (count($msglines)>0) { $lines=file("$datadir/topic$fid.dat"); $i=count($lines); do {$i--; $dt = explode("|", $lines[$i]); $topicsid[$i]=$dt[7];} 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[4]); $gi="1"; $add="е Текст ";} if ($gdefinder=="2") {$msgmass=array($dt[3],$dt[4]); $gi="2"; $add="ях Текст и Заголовок ";} if ($gdefinder=="3") {$msgmass=array($dt[0]); $gi="1"; $add="е Автор ";} if ($gdefinder=="4") {$msgmass=array($dt[3]); $gi="1"; $add="е Заголовок ";} // Цикл по местам поиска (0,1,2,3,4) do {$gi--; $msg=$dt[4]; $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>$qq) {$page=ceil($in/$qq);} else $page="1"; // расчитываем верную страницу и номер сообщения if ($oldid!=$id and $number<100) { $number++; $msgnumber=$iii; if ($nump>1) $anp="$nump"; else $anp="1"; if ($number>1) print""; print ""; $printflag="0"; $nump="0"; } else $nump++; if ($number>=100) { print"
Заголовокчасть сообщенияСовпадений
в теме
$anp
$number $dt[3] $msgtowrite
* поиск останавливается, при нахождении более 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 файл topic$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 © 1.9.9