<?php
// Domain-Name für die Anzeige in den Resultaten
$DomainName = "http://".GetParam("SERVER_NAME", "S");
// Root-Verzeichnis für den Zugriff auf die Dateien am Server
// Beispiel: $RootDir=dirname("/htdocs");
$RootDir = dirname(GetParam("SCRIPT_FILENAME", "S"));
// Dateiname für die Protokollierung der Suchbegriffe
// (kein Dateiname zum deaktivieren der Protokollierung)
// z.B. "../../files/logs/search_words.log"
$SearchWordLog = "";
// Länge der Textfragmente um die Fundstellen (in Zeichen)
$Found_Piece_Len = 50;
// Erlaubtes Verzeichnis
// Z.B.: $AllowedDirs = $RootDir."/content";
$AllowedDir = array($RootDir."",$RootDir."");
// Erlaubte Erweiterungen als Array, getrennt mit einem Beistrich
// Z.B.: $AllowedExts=array(".php",".php3",".php4",".htm",".html",".ihtml",".shtm",".shtml",".txt");
$AllowedExts = array(".php",".html",".shtml");
// Deutsche Umlaute dekodieren (dadurch wird beispielsweise "ä" zu "ä")
$ActivateUmlaut = true;
// Links zu den gefundenen Seiten in einem neuen Tab/Fenster öffnen
$LinkTargetBlank = false;
// *****************************************************************************
?>
<!--[if IE]><style type="text/css"> body {word-wrap: break-word;}</style><![endif]-->
<!-- Search form -->
<?php
$SearchTerm = FormatSearchString(stripslashes(GetParam("q", "P")));
if (!$SearchTerm) $SearchTerm = FormatSearchString(stripslashes(GetParam("q", "G")));
?>
<?php
if($SearchTerm){
// Protokollierung der Suchbegriffe
if(file_exists($SearchWordLog)) {
$fp=@fopen($SearchWordLog,"a");
if($fp) {
flock($fp,2);
fputs($fp,$SearchTerm."\r\n",256);
flock($fp,3);
fclose($fp);
}
}
?>
<?
echo "<h1>Resultate</h1>\n in mebra-mbh.de\n <p>";
$files=ReadDirs($AllowedDir,$AllowedExts);
$ResultCount=0;
if($files && $SearchTerm){
foreach($files as $f){
if(SearchFile($f,$SearchTerm)){
$f1 = str_replace(".php", ".php", $f);
$fn=$f;
if(!strpos($f1, "test") && !strpos($f1, "bak") && !strpos($f1, "old") && !strpos($f1, "search") && !strpos($f1, "suche")) {
if(substr($f,0,strlen($RootDir))==$RootDir) $fn=$DomainName.substr($f1,strlen($RootDir));
$ResultCount++;
echo $ResultCount.". ";
echo '<a href="'.$fn.'"';
if ($LinkTargetBlank) echo ' target="_blank"';
echo "><b>".$Site_Title."</b></a><br>\n";
if($Meta_Description) echo $Meta_Description."<br>\n";
echo "<span class=small><span class=grey>".$Site_Content."</span></span><br>\n";
echo "<span class=grey>Datei:</span> <span class=green>".$fn."</span>";
echo " - ";
echo "<span class=grey>Größe:</span> <span class=green>".round(filesize($f)/1024,2)." KB</span>";
echo "<br>";
echo "<br>\n";
}
}
}
clearstatcache();
}
echo "Es wurden <b>".$ResultCount."</b> Seiten gefunden.<br>\n";
}
function SearchFile($url,$search){
global $Found_Piece_Len;
global $ActivateUmlaut;
global $RootDir;
global $DomainName;
global $Site_Title;
global $Meta_Title;
global $Site_Content;
global $Meta_Description;
global $Meta_Robots;
$Site_Title="";
$Meta_Title="";
$Meta_Keywords="";
$Site_Content="";
$Meta_Description="";
$Meta_Robots="";
// *** Meta-Angaben ermitteln ***
$gmtarray=get_meta_tags($url);
while(list($key,$val)=each($gmtarray)){
switch(strtolower($key)){
case "title": $Meta_Title=$val; break;
case "keywords": $Meta_Keywords=$val; break;
case "description": $Meta_Description=$val; break;
case "robots": $Meta_Robots=strtolower($val); break;
case "revisit": $Meta_Revisit=strtolower($val); break;
case "revisit-after": $Meta_RevisitAfter=strtolower($val); break;
}
}
$Meta_Description="";
// *** Dateiinhalt einlesen (bzw. Ausgabe bei PHP) ***
$fp=@fopen($url,"r");
if(!$fp) return false;
$content="";
while(!feof($fp)){
$content.=fgets($fp,10240);
}
fclose($fp);
$content = preg_replace("/<\?.*?\?>/s", "", $content);
$content = preg_replace("/<script.*?\/script>/s", "", $content);
$content = $Meta_Title." ".$Meta_Keywords." ".$Meta_Description." ".trim($content);
// *** Seitentitel ermitteln ***
$Site_Title = GetSiteTitle($content);
if(!$Site_Title) $Site_Title = $Meta_Title;
if(!$Site_Title) $Site_Title = basename($url);
if (substr($content, 0, strlen($Site_Title)) == $Site_Title) $content = substr($content, strlen($Site_Title));
$content = strip_tags($content);
$content = str_replace("\n", " ", $content);
$content = str_replace("\r", "", $content);
$sc = " ".trim($content);
while(strpos($sc," ")){
$sc=str_replace(" "," ",$sc);
}
$content=$sc;
// Deutsche Umlaute konvertieren
if($ActivateUmlaut){
$content=str_replace("ä","ä",$content);
$content=str_replace("ö","ö",$content);
$content=str_replace("ü","ü",$content);
$content=str_replace("Ä","Ä",$content);
$content=str_replace("Ö","Ö",$content);
$content=str_replace("Ü","Ü",$content);
$content=str_replace("ß","ß",$content);
}
$content=str_replace("€","€",$content);
$content=str_replace(" "," ",$content);
// *** Suchen ***
$found=false;
$a=explode(" ",strtolower($search));
$lowcontent=strtolower($content);
$result_text="";
foreach($a as $arg){
$p0=strpos($lowcontent,$arg);
if($p0>0){
$p1=$Found_Piece_Len;
$p2=$Found_Piece_Len;
if (($p0-$p1) < 0) $p1=$p0;
$result_text.="...".substr($content,$p0-$p1,$p1)."<b class=red>";
$result_text.=substr($content,$p0,strlen($arg))."</b>".substr($content,$p0+strlen($arg),$p2);
$found=true;
}else{
$found=false;
break;
}
}
if(!$found) return false;
if($result_text) $result_text.="...";
$Site_Content=$result_text;
return true;
}
function FormatSearchString($search){
$chars=".:-_,;!§$%&/()=#+*~'?\[|]{^°}²³µ@€ äöüß1234567890abcdefghijklmnopqrstuvwxyz";
$s="";
for($i=0;$i<strlen($search);$i++){
$a=substr($search,$i,1);
if(stristr($chars,$a)) $s.=$a;
}
while(strpos($s," ")){
$s=str_replace(" "," ",$s);
}
return trim($s);
}
function ReadDirs($d1,$ExtArray){
$fileArray=array();
foreach($d1 as $d){
if($hDir = opendir($d)){
while($file=readdir($hDir)){
if(!is_dir($d."/".$file)){
// *** .*-Dateien (zB .htaccess) ignorieren ***
if(substr($file,0,1)!="."){
foreach($ExtArray as $ext){
if(substr(strtolower($file),strlen($file)-strlen($ext),strlen($ext))==strtolower($ext)){
array_push($fileArray,$d."/".$file);
continue;
}
}
}
}
}
closedir($hDir);
}
}
return $fileArray;
}
function GetSiteTitle($content)
{
$p1=strpos(strtolower($content),"<title>");
if(!$p1) return false;
$p2=strpos(strtolower($content),"</title>",$p1);
if(!$p2) return false;
return trim(substr($content,$p1+7,$p2-$p1-7));
}
function GetParam($ParamName, $Method = "P", $DefaultValue = "") {
if ($Method == "P") {
if (isset($_POST[$ParamName])) return $_POST[$ParamName]; else return $DefaultValue;
} else if ($Method == "G") {
if (isset($_GET[$ParamName])) return $_GET[$ParamName]; else return $DefaultValue;
} else if ($Method == "S") {
if (isset($_SERVER[$ParamName])) return $_SERVER[$ParamName]; else return $DefaultValue;
}
}
?>
Alles anzeigen