<?php
$frm="1";
require_once"../templates/start.php";
require ("../config.php"); //Подключаем настройки сайта. (config.php)
require ("../themes/$themes.php"); # Вставляем скин сайта.
if ($portal=="off") //Проверка включен портал или нет, если выключен, то выводим $offmes
{
print ("<center> $offmes </center>");
}
if ($_SERVER['REMOTE_ADDR']==$ban)
{
print ("<center>Вам сюда нельзя!!! Вас забанили!!</center>");
}else{
if ($portal=="on") //Проверка включен портал или нет, если включен, то выводим содержимое сайта
{
if(empty($action)){$action="index";}
$minfindme="1"; //минимальное кол-во символов в слове для поиска
echo'<b>Поиск</b><br>';
if($action=="index"){
echo'<form action="search.php?event=go&action=search&'.SID.'" method="post">
Запрос:
<br><input type="text" name="findme"><br>
Тип:
<br><select name="ftype">
<option value="0">"И"
<option value="1" selected>"ИЛИ"
<option value="2">Вся фраза целиком
</select><br><br>
<input type="submit" value="Поиск"></form><hr>';
echo '<br>Язык запросов:<br>
"И" - должны присутствовать оба слова;<br>
"ИЛИ" - есть ХОТЯ БЫ одно из слов;<br>
"Вся фраза целиком" - в искомом документе ищите фразу на 100% соответствующую вашему запросу;<br>
Скрипт ищет все данные, которые начинаются с введенной вами строки. Например, при запросе "форум" будут найдены слова "форум", "форумы", "форумом"; и многие другие.<br>';
}
if($action=="search"){
// Разбиваем $findme на слова
$findme=stripslashes($findme);
$findmeword=explode(" ",$findme);
$wordsitogo=count($findmeword);
$findme=htmlspecialchars(trim(stripslashes($findme)));
if ($findme == "" || strlen($findme) < $minfindme) {echo "<br>Ваш запрос пуст, или менее $minfindme символов!";
echo'<br><br><a href="search.php?'.SID.'">К поиску</a>';
echo'<br><a href="index.php?'.SID.'">В форум</a>';
require_once"../templates/foot.php";
exit;}
// Открываем файл с темами формума и запоминаем имена файлов с сообщениями
// ПЕРВЫЙ цикл - считаем кол-во форумов (записываем в переменную $itogofid)
$mainlines = file("../data/dataforum/mainforum.dat");
$i=count($mainlines); $itogofid="0"; $number="0"; $oldid="0"; $nump="0";
do {$i--; $dt = explode("|", $mainlines[$i]);
if ($dt[0]!="razdel") {$itogofid++;} // $itogofid - общее кол-во форумов
} while($i > "0");
$fid=$itogofid;
do {
// ВТОРОЙ цикл - открываем файл с топиком (если он существует) и сохраняем в переменную $topicsid все имена тем
if (is_file("../data/dataforum/topic$fid.dat")) {
$msglines=file("../data/dataforum/topic$fid.dat");
if (count($msglines)>0) {
$lines = file("../data/dataforum/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]);
$file=file("../data/dataforum/$id.dat");
$iii=count($file);
// ЧЕТВЁРТЫЙ цикл - последовательно ищем в каждой теме искомое сообщение
do {$iii--;
$lines = file("../data/dataforum/$id.dat");
$dt = explode("|", $lines[$iii]);
$msgmass=array($dt[4]); $gi="1"; $add="е <b>Текст</b> ";
///////////////////////////////////////////////
// Цикл по местам поиска (0,1,2,3,4) do {$dt=explode("|", $lines[$a1]);
do { $gi--;
$msg=$dt[4];
$msdat=$msgmass[$gi];
$stroka="0"; $wi=$wordsitogo;
// ЦИКЛ по КАЖДОМУ слову запроса !
do {$wi--;
// БЛОК УСЛОВИЙ ПОИСКА
if ($ftype=="2")
{
if (stristr($msdat,$findme)) // ПОИСК по "ВСЕЙ ФРАЗЕ ЦЕЛИКОМ" БЕЗ учёта регистра
{
$stroka++;
//$msg=eregi_replace($findme," <b><u>$findme</u></b> ",$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]," <b><u>$findmeword[$wi]</u></b> ",$msg);
}
}
}
} while($wi > "0"); // конец ЦИКЛа по КАЖДОМУ слову запроса
// Подготавливаем результирующее сообщение, и если результат соответствует условиям - выводим его
if ($ftype=="0") { if ($stroka==$wordsitogo) {$echoflag="1";} }
if ($ftype=="1") { if ($stroka>"0") {$echoflag="1";} }
if ($ftype=="2") { if ($stroka==$wordsitogo) {$echoflag="1";} }
if (!isset($echoflag)) {$echoflag="0";}
if ($echoflag=="1")
{//$msg=str_replace("<br>", " ", $msg); // заменяем в сообщении <br> на пару пробелов
if (strlen($msg)>150)
{
$ma=strpos($msg,"<b>"); 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)) {echo '<br>По запросу "<b>'.$findme.'</b>" в пол'.$add.' найдено: <hr>'; $m="1"; }
if ($iii>$qq) {$page=floor($iii/$qq); $page=$page*$qq;} else {$page="0";}
if ($oldid!=$id and $number<50) {$number++; $msgnumber=$iii;
if ($nump>1) {$anp="$nump";} else {$anp="1";}
//$sercount[]=$msgtowrite;
echo"<div class=b>";
echo '<a href="index.php?fid='.$fid.'&id='.$id.'&page='.$page.'&'.SID.'">'.$dt[3].'</a></div><div>';
echo 'Cообщение: '.$msgtowrite;
echo'<br>Совпадений: '.$anp.'</div>';
$echoflag="0"; $nump="0";} else {$nump++;} $oldid=$id;
}
} while($gi > "0"); // конец ЦИКЛа по МЕСТУ поиска while($a1 < $u);
} while($iii > "0");
} while($ii > "0");
} // if isset($topicsid)
} // if файл topic$fid.dat НЕ пуст
$fid--;
} while($fid > "0");
if (!isset($m)) {echo "<br>По вашему запросу ничего не найдено.";}
echo'<br><a href="search.php?'.SID.'">К поиску</a>';
}
echo'<br><a href="index.php?'.SID.'">В форум</a>';
}}
require_once"../templates/foot.php";
?>