'; 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=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); $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; } // --ЦИФРОЗАЩИТА-- if (isset($_GET['image'])) { // Функция с цифрами защиты $st="R0lGODlhCgAMAIABAFNTU////yH5BAEAAAEALAAAAAAKAAwAAAI"; // общая часть для всех рисунков function imgwr($st,$num){ if ($num=="0") {$len="63"; $number=$st."WjIFgi6e+QpMP0jin1bfv2nFaBlJaAQA7";} if ($num=="1") {$len="61"; $number=$st."UjA1wG8noXlJsUnlrXhE/+DXb0RUAOw==";} if ($num=="2") {$len="64"; $number=$st."XjIFgi6e+QpMPRlbjvFtnfFnchyVJUAAAOw==";} if ($num=="3") {$len="64"; $number=$st."XjIFgi6e+Qovs0RkTzXbj+3yTJnUlVgAAOw==";} if ($num=="4") {$len="64"; $number=$st."XjA9wG8mWFIty0amczbVJDVHg9oSlZxQAOw==";} if ($num=="5") {$len="63"; $number=$st."WTIAJdsuPHovSKGoprhs67mzaJypMAQA7";} if ($num=="6") {$len="63"; $number=$st."WjIFoB6vxmFw0pfpihI3jOW1at3FRAQA7";} if ($num=="7") {$len="61"; $number=$st."UDI4Xy6vtAIzTyPpg1ndu9oEdNxUAOw==";} if ($num=="8") {$len="63"; $number=$st."WjIFgi6e+QpMP2slSpJbn7mFeWDlYAQA7";} if ($num=="9") {$len="64"; $number=$st."XjIFgi6e+QpMP0jinvbT2FGGPxmlkohUAOw==";} header("Content-type: image/gif"); header("Content-length: $len"); echo base64_decode($number); } // Вывод изображений на экран (все кодированы - робот не пройдёт) if (array_key_exists("image", $_REQUEST)) { $num=$_REQUEST["image"]; for ($i=0; $i<10; $i++) {if (md5($i+$absrand)==$num) {imgwr($st,$i); die();}} } exit;} // ВСЁ, что делается при наличии переменной $_GET['event'] if(isset($_GET['event'])) { // РЕПУТАЦИЯ - окно выбора: шаг 1 if ($_GET['event']=="repa") { if (!isset($_GET['name'])) {exit("Нет данных переменной $name.");} $name=$_GET['name']; if (!isset($_GET['who'])) {exit("Нет данных переменной $who.");} $name=replacer($name); $userpn=$_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) {exit("$back. По правилам форума
поднимать репутацию себе ЗАПРЕЩЕНО!");} print "Изменение РЕПУТАЦИИ участника: $name
Оцените репутацию
участника $name
-5 -2 -1 0 +1 +2 +5
"; exit; }} // РЕПУТАЦИЯ - сохранение: шаг 2 if ($_GET['event']=="repasave") { if (!isset($_POST['userpn'])) {exit("Нет данных переменной $userpn.");} if (!isset($_POST['repa'])) {exit("Нет данных переменной $repa.");} $userpn=$_POST['userpn']; if (!ctype_digit($userpn) or strlen($userpn)>4) {exit("$back. Попытка взлома. Хакерам здесь не место.");} $repa=$_POST['repa']; if (!is_numeric($repa)) {exit("$back. Попытка взлома. Не хулигань, друг!");} if ($repa>5 or $repa<-5) {exit("$back. Попытка взлома. Репу можно менять только на +-5 пунктов. Не хулигань, друг!");} $today=mktime(); // БЛОК добавляет + к репутации ЮЗЕРА //ИМЯ_ЮЗЕРА|Тем|Сообщений|Репутация|Предупреждения Х/5|Когда последний раз меняли рейтинг в UNIX формате||| $ufile="$datadir/userstat.dat"; $ulines=file("$ufile"); $ui=count($ulines)-1; $ulinenew=""; // Ищем юзера по имени в файле userstat.dat, если недавно голосовали за него, запрещаем. for ($i=0;$i<=$ui;$i++) {$udt=explode("|",$ulines[$i]); if ($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";} $ulinenew.="$ulines[$i]";} // Записываем данные в файл $fp=fopen("$ufile","w"); flock ($fp,LOCK_EX); fputs($fp,"$ulinenew"); fflush ($fp); flock ($fp,LOCK_UN); fclose($fp); print "



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


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


Закрыть окно
");} if (!isset($_GET['email'])) {exit("Нет данных переменной $email.");} if (!isset($_GET['name'])) {exit("Нет данных переменной $name.");} ////!!!!!!!!!!! обработать NAME по полной!!!!!!!!!!!!! $uemail=$_GET['email']; $uname=$_GET['name']; $text="$uemail|$uname|"; $text=htmlspecialchars($text); $text=stripslashes($text); $text=str_replace("\r\n","
",$text); $dt=explode("|",$text); $uemail=$dt[0]; $uname=$dt[1]; if (isset($_GET['fid'])) {$fid=$_GET['fid'];} if (isset($_GET['id'])) {$id=$_GET['id'];} print " Отправление сообщения автору объявления
"; //-А-Н-Т-И-С-П-А-М- if (!isset($wrfname)) { if ($antispam!="0") { // Вывод изображений на экран (все кодированы - робот не пройдёт) if (array_key_exists("image", $_REQUEST)) { $num=$_REQUEST["image"]; for ($i=0; $i<10; $i++) {if (md5($i+$absrand)==$num) {imgwr($st,$i); die();}} } $xkey=""; mt_srand(time()+(double)microtime()*1000000); echo'
Получатель сообщения: $uname
  Ваше Имя:* и E-mail:*
  Сообщение:*
Защитный код: '; for ($i=0; $i<$maxkey; $i++) { $snum[$i]=mt_rand(0,9); $psnum=md5($snum[$i]+$absrand); $phpself=$_SERVER["PHP_SELF"]; echo "\n"; $xkey=$xkey.$snum[$i]; } $xkey=md5("$xkey+$absrand"); print" (введите число) "; } // if $antispam!="0" } // if !isset($wrfname) //-К-О-Н-Е-Ц--А-Н-Т-И-С-П-А-М-А- if (isset($_GET['id'])) {print"";} echo'
'; exit; } // ШАГ 2 отправки сообщения пользователю if ($_GET['event']=="mailtogo") { $name=$_POST['name']; $email=$_POST['email']; $msg=$_POST['msg']; if (isset($_POST['fid'])) {$fid=$_POST['fid'];} if (isset($_POST['id'])) {$id=$_POST['id'];} $uname=$_POST['uname']; $uemail=$_POST['uemail']; //--А-Н-Т-И-С-П-А-М--проверка кода-- if ($antispam!="0") { $bada="$back Введённый вами код НЕ верен!"; if (isset($_POST['usernum'])) {$usernum=$_POST['usernum'];} else {exit("$bada");} if (isset($_POST['xkey'])) {$xkey=$_POST['xkey'];} else {exit("$bada");} $userkey=md5("$usernum+$absrand"); if ($userkey!=$xkey) {exit("$bada");}} //--А-Н-Т-И-С-П-А-М--проверка кода-- if (!eregi("^([0-9a-z]([-_.]?[0-9a-z])*@[0-9a-z]([-.]?[0-9a-z])*\\.[a-wyz][a-z](fo|g|l|m|mes|o|op|pa|ro|seum|t|u|v|z)?)$", $email) and strlen($email) < 30 and $email != "") {exit("$back и введите корректный E-mail адрес!
");} if (!eregi("^([0-9a-z]([-_.]?[0-9a-z])*@[0-9a-z]([-.]?[0-9a-z])*\\.[a-wyz][a-z](fo|g|l|m|mes|o|op|pa|ro|seum|t|u|v|z)?)$", $uemail) and strlen($uemail) < 30 and $uemail != "") {exit("$back у пользователя задан несуществующий E-mail адрес!
");} if ($name=="") {exit("$back Вы не ввели своё имя!
");} if ($msg=="") {exit("$back Вы не ввели сообщение!
");} $text="$name|$msg|$uname|$email|"; $text=htmlspecialchars($text); $text=stripslashes($text); $text=str_replace("\r\n","
",$text); $exd=explode("|",$text); $name=$exd[0]; $msg=$exd[1]; $uname=$exd[2]; $email=$exd[3]; $headers=null; // Настройки для отправки писем $headers.="Content-Type: text/html; charset=windows-1251\r\n"; $headers.="From: $name <".$email.">\r\n"; $headers.="X-Mailer: PHP/".phpversion()."\r\n"; // Собираем всю информацию в теле письма $host=$_SERVER["HTTP_HOST"]; $self=$_SERVER["PHP_SELF"]; $furl="http://$host$self"; $furl=str_replace("tools.php", "", $furl); $allmsg="

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

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


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



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


Закрыть окно
"; exit; } // проверка имени/пароля и вход на форум if ($_GET['event']=="regenter") // if ($event =="regenter") { if (!isset($_POST['name']) & !isset($_POST['pass'])) {exit("$back введите имя и пароль!");} $name=str_replace("|","I",$_POST['name']); $pass=$_POST['pass']; $text="$name|$pass|"; $text=trim($text); // Вырезает ПРОБЕЛьные символы if (strlen($text)<4) {exit("$back Вы не ввели имя или пароль!");} $text=replacer($text); $exd=explode("|",$text); $name=strtolower($exd[0]); $pass=$exd[1]; // проходим по всем пользователям и сверяем данные $lines=file("$datadir/usersdat.php"); $i=count($lines); 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="$i"; $tektime=time(); $wrfcookies="$rdt[0]|$rdt[1]|$tektime|$tektime|"; setcookie("wrfcookies", $wrfcookies, time()+1728000); }} // if-ы } while($i > "1"); if (!isset($regenter)) {exit("$back Ваш данные НЕ верны!");} Header("Location: index.php"); } // Регистрация НОВЫЙ ШАГ 2!! отправка на мыл подтверждения и сохранение в БД if ($_GET['event']=="reg2") { 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!="0") { $bada="$back Введённый вами код НЕ верен!"; if (isset($_POST['usernum'])) {$usernum=$_POST['usernum'];} else {exit("$bada");} if (isset($_POST['xkey'])) {$xkey=$_POST['xkey'];} else {exit("$bada");} $userkey=md5("$usernum+$absrand"); if ($userkey!=$xkey) {exit("$bada");}} //--А-Н-Т-И-С-П-А-М--проверка кода-- 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!="мужчина") {$pol="женщина";} $email=str_replace("|","I",$email); // КОЛДУЕМ рандомный КОД активации $z=1; do {$key=mt_rand(100000,999999); if (strlen($key)==6) {$z++;} } while ($z<1); if ($useactkey!="1") {$key="";} $text="$name|$pass|0|$email|$dayreg||$pol||||||noavatar.gif|$key|"; $text=replacer($text); $exd=explode("|",$text); $name=$exd[0]; $pass=$exd[1]; $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 уже зарегистрирован на форуме!");}} // отправка пользователю КОДА АКТИВАЦИИ $host=$_SERVER["HTTP_HOST"]; $self=$_SERVER["PHP_SELF"]; $furl="http://$host$self"; $headers=null; // Настройки для отправки писем $headers.="Content-type: text/plain; charset=windows-1251\r\n"; $headers.="From: ".$name." <".$email.">\r\n"; $headers.="X-Mailer: PHP/".phpversion()."\r\n"; // Собираем всю информацию в теле письма if ($useactkey=="1") { $allmsg=$fname.' (подтверждение регистрации)'.chr(13).chr(10). 'Подтвердите регистрациию на форуме, для этого перейдите по ссылке: '.$furl.'?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); } 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=="1") {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!="1") { $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(); // подключаем ШАПКУ форума print"
Подтверждение регистрации

Ввод емайла и активационного ключа
Адрес e-mail:
Активационный ключ:
"; exit; } // защиты от взлома по ключу и емайлу if (strlen($key)<6 or strlen($key)>6 or !ctype_digit($key)) {exit("$back. Вы ошиблись при вводе ключа. Ключ может содержать только 6 цифр.");} $email=stripslashes($email); $email=htmlspecialchars($email); $email=str_replace("|","I",$email); $email=str_replace("\r\n","
",$email); if (strlen($key)>30) {exit("Ошибка при вводе емайла");} // Ищем юзера с таким емайлом и ключом. Если есть - меняем статус на пустое поле. $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 Вы не ввели пароль!");} $pass=str_replace("|","I",$_POST['pass']); $oldpass=$_POST['oldpass']; // Старый пароль if (strlen($pass)<1 or strlen($pass)>20) {exit("$back Вы не ввели пароль. Пароль не должен быть пустым.");} 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=$_POST['dayx'];} else {$dayx="";} if (isset($_POST['pol'])) {$pol=$_POST['pol'];} else {$pol="";} if ($pol!="мужчина") {$pol="женщина";} if (isset($_POST['icq'])) {$icq=$_POST['icq'];} else {$icq="";} if (isset($_POST['www'])) {$www=$_POST['www'];} else {$www="";} if (isset($_POST['about'])) {$about=$_POST['about'];} else {$about="";} if (isset($_POST['work'])) {$work=$_POST['work'];} else {$work="";} if (isset($_POST['write'])) {$write=$_POST['write'];} else {$write="";} if (isset($_POST['avatar'])) {$avatar=$_POST['avatar'];} else {$avatar="";} $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]; // блок загрузки АВАТАРА if ($_FILES['file']['name']!="") { $fotoname = $_FILES['file']['name']; // определяем имя файла $avatar=$fotoname; $fotosize=$_FILES['file']['size']; // Запоминаем размер файла // проверяем расширение $ext = strtolower(substr($fotoname, 1 + strrpos($fotoname, "."))); if (!in_array($ext, $valid_types)) {exit("ФАЙЛ НЕ загружен. Возможные причины:
- разрешена загрузка только файлов с такими расширениями: gif, jpg, jpeg, png
- Вы пытаетесь загрузить не графический файл;
- неверно введён адрес или выбран файл;
");} } $text="$name|$pass|$kolvomsg|$email|$dayreg|$dayx|$pol|$icq|$www|$about|$work|$write|$avatar|$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 ($_FILES['file']['name']!="") { // ЗАЩИТЫ от ВЗЛОМА // 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. защищаем от РУССКИХ букв в имени файла и проверяем расширение файла if (!preg_match("/^[a-z0-9\.\-_]+\.(jpg|gif|png|jpeg)+$/is",$fotoname)) {exit("Запрещено использовать РУССКИЕ буквы в имени файла!");} // 4. Проверяем, может быть файл с таким именем уже есть на сервере if (file_exists("$avatardir/$fotoname")) {exit("Файл с таким именем уже существует на сервере! Измините имя на другое!");} // Конец защит по имени файла // 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("Файл НЕ ЗАГРУЖЕН - ошибка СЕРВЕРА! Обратитесь к администратору!");} } // КОНЕЦ блока загрузки аватара $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") { // отсылает утеряные данные на мыло // защита от злостного хакера $text=strtolower($_POST['myemail']); $myemail=replacer($text); $lines=file("$datadir/usersdat.php"); $i=count($lines); $regenter=""; $myname=""; $mypassword=""; // проходим по всем пользователям и сверяем данные do {$i--; $rdt=explode("|", $lines[$i]); if (isset($rdt[1])) { // Если строчка потерялась в скрипте (пустая строка) - то просто её НЕ выводим $rdt[3]=strtolower($rdt[3]); if ($myemail==$rdt[3]) {$myname=$rdt[0]; $mypassword=$rdt[1];} } //if } while($i > "1"); // отправка пользователю его имени и пароля на мыло if ($myname!="") { $headers=null; // Настройки для отправки писем $headers.="Content-Type: text/plain; charset=windows-1251\r\n"; $headers.="From: <".$adminemail.">\r\n"; $headers.="X-Mailer: PHP/".phpversion()."\r\n"; $host=$_SERVER["HTTP_HOST"]; $self=$_SERVER["PHP_SELF"]; $furl="http://$host$self"; $furl=str_replace("tools.php", "index.php", $furl); // Собираем всю информацию в теле письма $allmsg=$fname.' (данные регистрации)'.chr(13).chr(10). 'Вы запросили Имя и Пароль доступа к форуму по адресу: '.$furl.chr(13).chr(10).chr(13).chr(10). 'Ваше Имя: '.$myname.chr(13).chr(10). 'Ваш пароль: '.$mypassword.chr(13).chr(10).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; $host=$_SERVER["HTTP_HOST"]; $self=$_SERVER["PHP_SELF"]; $forurl="http://$host$self"; $forurl=str_replace("/tools.php", "", $forurl); print"

Дополнительные смайлы

"; do { $rdt=explode(".",$lines[$k]); if ($rdt[1]=="jpg" or $rdt[1]=="gif") {print"  ";} $k++; } while ($k<$itogo); print"
Закрыть окно
"; exit; } // ----- Шапка для всех страниц форума 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(); // подключаем ШАПКУ форума // считываем имя последнего зарегистрировавшегося $userlines=file("$datadir/usersdat.php"); $ui=count($userlines)-1; $tdt=explode("|", $userlines[$ui]); if ($_GET['event']=="who") { // просмотр всех участников форума // если незареган - не пускаем if (!isset($_COOKIE['wrfcookies'])) {exit("



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


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


$back


");} $t1="row1"; $lines=file("$datadir/usersdat.php"); $maxi=count($lines)-1; echo''; if ($ui=="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;} 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); } // конец Если файл userdat.php пуст echo'
Имя Статус ЛС на Е-майл Зарегистрирован Дата рождения Сайт Откуда
Участников не зарегистрировано
$num $wfn $dt[13] $mls $dt[4] $dt[5] $dt[8] $dt[9]

Страницы:  '; // выводим СПИСОК СТРАНИЦ ВНИЗУ if ($page>=4 and $maxpage>5) print "1 ... "; $f1=$page+2; $f2=$page-2; if ($page==1) { $f1=$page+4; $f2=$page; } if ($page==2) { $f1=$page+3; $f2=$page-1; } if ($page==$maxpage) { $f1=$page; $f2=$page-4; } if ($page==$maxpage-1) { $f1=$page+1; $f2=$page-3; } if ($maxpage<4) {$f1=$maxpage; $f2=1;} for($i=$f2; $i<=$f1; $i++) {if ($page==$i) {print "$i  ";} else {print "$i  ";}} if ($page<=$maxpage-3 and $maxpage>5) print "... $maxpage"; print "Всего зарегистрировано участников - $ui

";} if ($_GET['event'] =="profile") { if (!isset($_GET['pname'])) {exit("Попытка взлома.");} $pname=urldecode($_GET['pname']); // РАСКОДИРУЕМ имя пользователя, пришедшее из GET-запроса. $lines=file("$datadir/usersdat.php"); $i = count($lines); $use="0"; do {$i--; $rdt=explode("|", $lines[$i]); if (isset($rdt[1])) { // Если строчка потерялась в скрипте (пустая строка) - то просто её НЕ выводим if (strlen($rdt[13])=="6" and ctype_digit($rdt[13])) {$rdt[13]="ожидание активации";} if ($pname===$rdt[0]) { if (isset($wrfname) & isset($wrfpass)) { $wrfname=replacer($wrfname); $wrfpass=replacer($wrfpass); if ($wrfname===$rdt[0] & $wrfpass===$rdt[1]) { print "
Регистрационные данные

"; print "
Регистрационная информация
Поля отмеченные * обязательны к заполнению, если не указано обратное
Имя участника: *
Русские ники РАЗРЕШЕНЫ
$rdt[0]
Ваш пароль: *
Адрес e-mail: *
Введите существующий электронный адрес! Форум защищён от роботов-спамеров.
 
Немного о себе
Эта информация необязательна
Дата регистрации:$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]
Отправить личное сообщение на 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") { echo'



Уважаемый посетитель!

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

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

Перейти на главную страницу форума можно по этой ссылке












'; } } if ($_GET['event']=="reg") { if (!isset($_POST['rules'])) { echo'
Правила и условия регистрации

Правила работы с форумом
Администрация форума оставляет за собой право закрыть доступ к Форуму любому пользователю, а также удалить его сообщения без предупреждения и объяснения причин. Однако этого, скорее всего, не произойдет, если Вы будете придерживаться следующих правил:

1. Не допускаются пропаганда или агитация, возбуждающие социальную, расовую, национальную, половую или религиозную ненависть и вражду. Запрещается пропаганда социального, расового, национального, полового, религиозного или языкового превосходства.
2. Запрещается размещение рекламных сообщений, а также рекламных фраз в подписях и именах пользователей без разрешения Администрации . Администрация оставляет за собой право удалить рекламные сообщения/ссылки без уведомления пользователя в любом её проявлении (форум и чат падонков в том числе).
3. Запрещается нарушать тематику форумов и разделов.
4. Не допускается размещение одного топика/сообщения в нескольких различных форумах, а также размещение любых постоянно повторяющихся топиков/сообщений.
5. Запрещается использование нецензурных выражений и ругательств (на любом языке и в любой кодировке), оскорбляющих достоинство пользователей Форума студии КнязьАрт, в любой части сообщения - заголовке, тексте, подписи и пр. Запрещаются ругательства при условии замены букв слова значком *.
6. Запрещается публично "выяснять отношения" или оставлять сообщения, адресованные конкретным пользователям. Не допускается флуд - размещение сообщений, не соответствующих теме топика и/или не несущих выраженной смысловой нагрузки.
7. Запрещается публикация сообщений, намеренно дискредитирующих и/или наносящих моральный или любой другой урон любому лицу (юридическому или физическому). Не разрешается публиковать личные данные о пользователях без их согласия.
8. Запрещается обсуждение поведения модераторов и администраторов Форума. Любые пререкания с модераторами и администраторами Форума караются ограничением в пользовании Форумом (срок определяют администраторы).
9. Запрещается обсуждение тем и размещение сообщений, противоречащих законодательству РФ или призывающих к его нарушению.
10. Запрещается передача логинов и паролей для входа на Форум другим пользователям.
11. Заботьтесь о том, чтобы оформление сообщений не создавало трудностей при просмотре. Избегайте оверквотинга. Сообщения, размещенные в кодировках иных, чем Windows-1251, а также с чрезмерно длинными неразбиваемыми строками (приводящими к появлению горизонтальной прокрутки на страницах Форума), неправильным использованием тэгов цитирования или форматированного текста могут быть удалены модераторами Форума. Категорически запрещается вложенное цитирование.
12. Каждый участник форума несет полную административную ответственность за размещенную им на Форуме информацию.
13. Категорически запрещается писать латиницей или с умышленными орфографическими ошибками, делающие текст нечитаемым. Подобные тексты удалятся сразу и без объяснения причин.
14. Данные правила действительны для всех разделов Форума студии КнязьАрт. Обратите внимание, что на ряде форумов действуют дополнительные правила. Информацию о них можно получить в "информации о форуме" либо в специальном топике форума.
15. Администрация не несет ответственности за содержание каких-либо форумов и/или отдельных сообщений, за исключением сообщений, размещаемых Администрацией.
16.Запрещается (не приветствуется без особых на то причин) иметь более одного логина на форуме для одного IP-адреса. Тем, кто уже имеет более одного - необходимо послать администрации форума письмо, где указать тот, который необходимо оставить. Ежемесячно будет производиться "чистка" - все "лишние/потеряные/забытые" логины подлежат уничтожению. Большее количество логинов с одного IP иметь можно, если с компьютера на форум выходит более одного человека. (Если из соответствующих сообщений будет видно, что под несколькими логинами на самом деле сидит один человек, то логины могут быть удалены без предупреждения администраторами форума).
17.Меры пресечения по тому или иному правилу начинают действовать с момента его принятия (если в самом правиле не оговорено обратное). Никто не может быть наказан по правилу, которого до текущего момента ещё не существовало.

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

Я ознакомился с правилами и условиями, и принимаю их.
'; } else { print"
Регистрация на форуме

"; //-А-Н-Т-И-С-П-А-М- if ($antispam!="0") { // Вывод изображений на экран (все кодированы - робот не пройдёт) if (array_key_exists("image", $_REQUEST)) { $num=$_REQUEST["image"]; for ($i=0; $i<10; $i++) {if (md5($i+$absrand)==$num) {imgwr($st,$i); die();}} } $xkey=""; mt_srand(time()+(double)microtime()*1000000); echo'
Регистрационная информация
Имя участника:
Разрешено использовать только русские, латинские буквы, цифры и знак подчёркивания
Ваш пароль:
Адрес e-mail:
Введите существующий электронный адрес! На Ваш емайл будет отправлено сообщение с кодом активации.
Ваш пол:
мужчина   женщина
Защитный код:
'; for ($i=0; $i<$maxkey; $i++) { $snum[$i]=mt_rand(0,9); $psnum=md5($snum[$i]+$absrand); $phpself=$_SERVER["PHP_SELF"]; echo "\n"; $xkey=$xkey.$snum[$i]; } $xkey=md5("$xkey+$absrand"); print" (введите число, указанное на картинке) "; } // if $antispam!="0" //-К-О-Н-Е-Ц--А-Н-Т-И-С-П-А-М-А- echo'
* Все поля обязательны к заполнению
** Ваш пароль будет также отправлен на адрес электронной почты, который Вы определите
'; } } if ($_GET['event']=="find") { // ПОИСК $minfindme="3"; //минимальное кол-во символов в слове для поиска print"
Поиск
Запрос: Тип: С учётом РЕГИСТРА
Язык запросов:
  • "И" - должны присутствовать оба слова;

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

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


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


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


"; print "Ограничение на поиск:
- минимальное кол-во символов: $minfindme"; } if (isset($_GET['find'])) { $minfindme="3"; //минимальное кол-во символов в слове для поиска $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";} // Защита от взлома $text=$_POST['findme']; $text=replacer($text); $findmeword=explode(" ",$text); // Разбиваем $findme на слова $wordsitogo=count($findmeword); $findme=trim($text); // Вырезает ПРОБЕЛьные символы 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 ($raz!="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"); do { $fid=$fids[$itogofid]; // ВТОРОЙ цикл - открываем файл с топиком (если он существует) и сохраняем в переменную $topicsid все имена тем if (is_file("$datadir/topic$fid.dat")) { $msglines=file("$datadir/topic$fid.dat"); 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[2]); $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=eregi_replace($findme," $findme ",$msg); } } else { $str1=strtolower($msdat); $str2=strtolower($findmeword[$wi]); if ($str2!="" and strlen($str2) >= $minfindme) { if (stristr($str1,$str2)) // ПОИСК БЕЗ учёта регистра при равных прочих условиях { $stroka++; $msg=eregi_replace($findmeword[$wi]," $findmeword[$wi] ",$msg); } } } } else // if ($withregistr!="1") { if ($ftype=="2") { if (strstr($msdat,$findme)) // ПОИСК по "ВСЕЙ ФРАЗЕ ЦЕЛИКОМ" C учёта РЕГИСТРА { $stroka++; $msg=eregi_replace($findme," $findme ",$msg); } } else { if ($msdat!="" and strlen($findmeword[$wi]) >= $minfindme) { if (strstr($msdat,$findmeword[$wi])) // ПОИСК С учётом РЕГИСТРА при равных прочих условиях { $stroka++; $msg=eregi_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"; } if ($iii>$qq) {$in=$iii+2; $page=ceil($in/$qq);} else {$page="1";} // расчитываем верную страницу и номер сообщения if ($oldid!=$id and $number<50) { $number++; $msgnumber=$iii; if ($nump>1) {$anp="$nump";} else {$anp="1";} if ($number>1) {print"";} print ""; $printflag="0"; $nump="0";} else {$nump++;} $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'
Заголовокчасть сообщенияСовпадений
в теме
$anp
$number $dt[3] $msgtowrite
По вашему запросу ничего не найдено.
';} $time=explode(' ',microtime()); $seconds=($time[1]+$time[0]-$start_time); echo "

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

"; } } // if isset($_GET['event']) - всё, что делается при наличии переменной $event echo'
Powered by WR-Forum © 1.8 eXclusive
'; // функция используется для отображения аватаров 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;} ?>