// Nett, dass Sie sich fuer meinen sourcecode interessieren. Der Link auf webdesign.weisshart.de darf nur nach Erwerb einer Lizenz entfernt werden!
// @ini_set('display_errors', '1');
setlocale (LC_CTYPE, 'de_DE'); // strtolower auch mit Umlauten - aber anscheinend nicht unter PHP 5.4
// PHP 8.x erzeugt bei fehlendem dir einen fatal error.
// $i = 0;
// $missing_dir = "";
// if ($alledirs === !true) {
// while($i < count($dirs)) {
// if (!is_dir($dirs[$i])) {
// $missing_dir .= $dirs[$i].'<br>';
// }
// $i++;
// }
//
// if ($missing_dir != "") {
// echo "Folgende(s) Verzeichnis(se) gibt es nicht:<br>";
// echo $missing_dir;
// echo "Bitte die config-Datei korrigieren.";
// exit;
// }
// }
// => #420 if ($description != ""){
if (!@ini_get('safe_mode')) @set_time_limit(45);
$mtime = microtime(); $mtime = explode( ' ', $mtime); $mtime = $mtime[1] + $mtime[0];
$such_start = $mtime;
$version= '';
if (phpversion() < '4.3.0') {
echo "<p>Dieses Script erfordert PHP Version 4.3.0 oder höher!<br />";
echo "auf Ihrem Server läuft aber PHP Version ".phpversion().".</p>";
exit;
}
$method = $_SERVER['REQUEST_METHOD'];
$array = "";
$ausgabe ="";
$found = 0;
$e = "";
$sorthinweis = "";
$link = "";
$durchsucht = 0;
$bereits_found = array();
if (!isset($plural)){
$plural = "n";
}
//if (!isset($punct)){$punct = "no";}
if (!isset($maxmsg)){
$maxmsg = 100;
}
if (!isset($dateform)){
$dateform = "de";
}
if (!isset($suchdauer)){
$suchdauer = "Sekunden";
}
if (!isset($beschreib)){
$beschreib = "Beschreibung: ";
}
if (!isset($treff)){
$treff = "Treffer";
}
if (!isset($filedate)){
$filedate = "zuletzt geändert am ";
}
if (!isset($noresult)){
$noresult = "<p><br />Es wurden leider keine exakten Übereinstimmungen mit dem eingegebenen Suchbegriff gefunden.<br />Vielleicht wollen Sie es mit einem allgemeineren Suchbegriff versuchen.</p>";
}
if (!isset($vorschlag)){
$vorschlag = "Oder Sie versuchen es einfach mal mit";
}
if (!isset($minlength)){
$minlength = "<p><br />Geben Sie bitte einen Suchbegriff von mindestens ".$length." Buchstaben Länge ein.</p>";
}
if (!isset($iframe)){
$iframe=false;
}
if (!isset($targetwahl)){
$targetwahl=false;
}
// if (!isset($exclude_strings)){
// $exclude_strings = array();
// }
if (!isset($installation_path)) {
$installation_path = "wdw_suche";
}
if (!isset($encoding)) {
$encoding = "ISO";
}
if (!isset($thumb_replace)) {
$thumb_replace = "_ss.jpg";
}
$list_hx_start = $list_hx_end = "";
if (isset($list_hx) && is_numeric($list_hx)) {
$list_hx_start = '<h'.$list_hx.'>';
$list_hx_end = '</h'.$list_hx.'> ';
}
if (!isset($hx_suchtip) || !is_numeric($hx_suchtip )) {
$hx_suchtip = 3;
}
// verbotene Zeichen
$exclude_strings_merge = array(
'\\', // das \ dient zum Maskieren von reservierten Zeichen
"'",
'*',
'|',
'+'
);
// $exclude_strings_merge = array_merge($exclude_strings, $exclude_strings2);
// $exclude_strings_merge = $exclude_strings2;
if (isset($suchtip0)){
$searchtip0 = "\n<h$hx_suchtip id='suchtipheader'>$suchtip0 </h$hx_suchtip>\n";
} else {
$searchtip0 = "\n<h$hx_suchtip id='suchtipheader'>Suchtipps: </h$hx_suchtip>\n";
}
if (isset($suchtip1)){
$searchtip1 = "<li>$suchtip1</li>\n";
} else {
$searchtip1 = "<li>Die Suche findet alle Seiten, die Ihren Suchbegriff enthalten - auch als Wortbestandteil. Eine Suche nach »test« findet also auch »spä<em>test</em>e«.</li>";
}
if (isset($suchtip2)){
$searchtip2 = "<li>$suchtip2</li>\n";
} else {
$searchtip2 = "<li>Wenn Sie Ihre Suche auf ganze Wörter einschränken wollen, fügen Sie vor und hinter dem Wort ein Leerzeichen ein, und umschließen alles mit Anführungszeichen. Beispiel: \" test \". »spä<em>test</em>e« wird dann nicht mehr gefunden. </li>";
}
$searchtip2 = "";
if (isset($suchtip3)){
$searchtip3 = "<li>$suchtip3</li>\n";
} else {
$searchtip3 = "<li>Wenn Sie mehrere Wörter eingeben, werden alle Dokumente gefunden, die <em>alle</em> eingegebenen Wörter enthalten, egal in welcher Reihenfolge (AND-Verknüpfung).
<br /><em>Je mehr Wörter, desto weniger Treffer.</em></li>";
}
if (isset($suchtip31)){
$searchtip31 = "<li>$suchtip31</li>\n";
} else {
$searchtip31 = "<li>Wenn Sie mehrere Wörter \"mit Anführungszeichen umschließen\", werden alle Dokumente gefunden, die alle eingegebenen Wörter exakt in der eingegebenen Weise enthalten.</li>";
}
if (isset($suchtip3or)){
$searchtip3or = "<li>$suchtip3or</li>\n";
}
if (!isset($weitertxt)){
$weitertxt = "weitere Treffer zeigen";
}
if (!isset($zuruecktxt)){
$zuruecktxt = "vorherige Treffer";
}
$value = "";
if (!isset($search)) {$search = $value;}
if (!isset($show_ext)) {$show_ext = true;}
if (!isset($prot)) {$prot = "http://";}
$searchtip4 = "";
if ($jump == true && $target == "") {
if (isset($suchtip4)){
$searchtip4 = "<li>$suchtip4</li>\n";
} else {
$searchtip4 = "<li>Falls die Suche nur einen einzigen Treffer ergibt, wird die Trefferseite direkt angesprungen.</li>\n";
}
}
// $ulstart = "$searchtip0<div id='suchtipps' class='klappen' >\n<ul>\n";
// $ulend = "</ul>\n</div>\n";
//
// if ($tipps) {$searchtip = $ulstart.$searchtip1.$searchtip2.$searchtip3.$searchtip31.$searchtip3or.$searchtip4.$ulend; }else {$searchtip ="";}
// bg fuer Credit-Link:
if (!isset($bg)) $bg = "#FFFFFF";
if (strpos($bg,'#') === false) $bg = '#'.$bg;
if (preg_match('/^#[0-9A-F]{1,6}$/i', $bg) && strlen($bg) == 7) {
$redH = base_convert(substr($bg, 1, 2), 16, 10);
$greenH = base_convert(substr($bg, 3, 2), 16, 10);
$blueH = base_convert(substr($bg, 5, 2), 16, 10);
// http://www.w3.org/TR/AERT#color-contrast
$sum = $redH*299 + $greenH*587 + $blueH*114;
if ($sum < 127000 ) {
$comp = "#FFFFFF";
} else {
$comp ="#000000";
}
} else {
$fehler = 1;
$bg = "#FFFFFF";
$comp = "#000000";
}
$wdw = '<p style="display:block !important; font-size: 10px !important; color:'.$comp.' !important; background:'.$bg.' !important"> script © 2023 by <a style="color:'.$comp.' !important; display:inline !important; font-size: 10px !important; font-weight:normal !important; text-decoration:none !important" href="https://webdesign.weisshart.de">webdesign weisshart</a></p>';
if (isset($pwd)) {
$server = str_replace ("www.","", $_SERVER['SERVER_NAME'] );
$server = str_replace ("+","", $server);
$server = str_replace ("-","", $server);
$dom = crc32($server);
$chave = $pwd / sprintf("%u", $dom);
}
if (isset($chave) && $chave == "321"){
$wdw ='';
}
// neues Fenster
echo'
<script>
function linkopener(a) {
var b=a?"_blank":"_self";
var c=document.links;
for(var i=0;i<c.length;i++) {
// nur Suchtreffer:
if (c[i].toString().indexOf("next") == -1 && c[i].toString().indexOf("?q=") > -1 ) {
c[i].target=b;
}
}
}
function linkcookie() {
if(document.cookie.indexOf("suchoeffnen") !== -1){
document.cookie = "such=0;path=/;expires=Thu, 01-Jan-70 00:00:01 GMT";
} else {
document.cookie="such=suchoeffnen; path =/";
}
}
function addEvent(obj, evType, fn){
if (obj.addEventListener){
obj.addEventListener(evType, fn, false);
return true;
} else if (obj.attachEvent){
var r = obj.attachEvent("on"+evType, fn);
return r;
} else {
return false;
}
}
</script>
';
if(isset($_GET["q"]) || isset($_POST["q"])) {
if (isset($_GET["q"]) && $_GET["q"] != "") $search = stripslashes($_GET["q"]);
if (isset($_POST["q"]) && $_POST["q"] != "") $search = stripslashes($_POST["q"]);
$ganzerausdruck = $search;
if (stristr($search, "Content-Type"))$search = "no spam here!";
if (strpos(strtolower($encoding),"utf")!== false) {
// echo "utf-8:";
$search = htmlspecialchars($search, ENT_NOQUOTES, "UTF-8");
} else {
// echo "ISO:";
$search = htmlspecialchars($search, ENT_NOQUOTES, "ISO-8859-15");
}
foreach($exclude_strings_merge as $k) {
$gesucht = str_replace($k,"",$search);
if (strlen(trim($search)) > strlen(trim($gesucht)) && strlen(trim($search)) >= $length ) {
$minlength = $noresult;
}
}
// ganze Ausdruecke suchen:
$ausdruck = false;
if (strpos($ganzerausdruck,'"') !== false || strpos($ganzerausdruck,"'") !== false ) {
$ausdruck = true;
}
$search = preg_replace('/[ ]{2,}/sm', ' ', $search);
if (file_exists("search_replace.php")) {include ("search_replace.php");}
// unerwuenschte Strings von der Suche ausschliessen
foreach($exclude_strings_merge as $k) {
$search = str_replace($k,"",$search);
}
$search = trim($search);
$search = str_replace ( '&', '&', $search ); // laesst html entities wie ş zu (z.B. tuerkische Sonderzeichen)
//die gleiche Zeile auch in die suchen.php, ausserdem Zeile 48 hier wegkommentieren.
if(empty($search)) {$search="";}
$searchlength = str_replace('"','',$search);
if(strlen($searchlength) >= $length && $search != $value) {
if (!isset($suchhinweis) || $suchhinweis == "") {
$searchhinweis = "Sie suchen nach";
} else {
$searchhinweis = $suchhinweis;
echo '<p>'.$searchhinweis.' <em>»'.$gesucht.'«</em>';
}
// die Funktion zum extrahieren von Teilstrings
function auslesen($all, $start, $end) {
if (stristr($all,$start)) {
$start_pos=strpos(strtolower($all),strtolower($start)) + strlen($start);
$rest = substr($all,$start_pos);
$end_pos=strpos(strtolower($rest),strtolower($end));
$erg = substr($rest,0,$end_pos);
return $erg;
}
}
// die Funktion zum Durchsuchen des Verzeichnisbaums:
if (!isset($exclude_dirs)) $exclude_dirs = array("");
function tree($ordner, $sub = FALSE) {
global $ergeb, $exclude_dirs;
$handle = opendir($ordner);
while (false !== ($file = readdir ($handle))) {
if($file != && $file != ".." && is_dir($ordner."/".$file) && !in_array($file, $exclude_dirs) ) {
$compl = $ordner."/".$file."/";
$ergeb = $ergeb.",".$compl;
tree($ordner."/".$file, TRUE);
}
}
closedir($handle);
}
if ($alledirs) {
tree();
$ergeb = "./".$ergeb;
$dirs = explode (",", $ergeb);
}
// unset($dirs[array_search('./tba/', $dirs)]);
// // Und um den Index wiederherzustellen
// $dirs = array_values($dirs);
// print_r($dirs); exit;
foreach($dirs as $dir) {
if (!is_dir($dir)) { continue;}
// if(!in_array($dir,$exclude_dirs)) {
$verz = opendir($dir);
while($file = readdir($verz)) {
if($file != && $file != ".." && $file != ".htaccess") {
$durchsucht = $durchsucht + 1;
// einzelne Dateien von der Suche ausschliessen
// die folgenden 8 Zeilen erlauben Auschluss von Substrings in $exclude_files
$nolist=false;
for ($e=0;$e<count($exclude_files);$e++) {
$pos = strpos($file,$exclude_files[$e]);
if ($pos !== false) {
$nolist = true;
}
}
if($nolist !== true && preg_match("=(\.$dat_type)$=",$file)) {
// Meta-Angaben ermitteln
$titel = "";
$keywords = "";
$description = "";
@$gmtarray=get_meta_tags($dir.$file);
foreach ($gmtarray as $key1 => $val) {
// while(list($key1,$val)=each($gmtarray)){
switch(strtolower($key1)){
case "title": $titel=$val; break;
case "keywords": $keywords=$val; break;
case "description": $description=$val; break;
}
}
$string1 = $string = @file_get_contents($dir.$file);
$string = str_replace(" "," ",$string); // weil sonst < als limit-end wirkt???
$string = preg_replace('#[\s]{2,}#s', ' ', $string); // mehrere Leerzeichen in eins umwandeln
// weil ansonsten ein < im Quelltext den Suchbereich beendet:
$string = str_replace("<","",$string);
if (file_exists("target_replace.php")) {include ("target_replace.php");}
// damit werden ganze Woerter gefunden, auch wenn sie in Tags eingeschlossen sind:
$string = str_replace("<"," <",$string);
$string = str_replace(">","> ",$string);
// html tags mit eingeschlossenen php tags raus - weil sonst ein einzelnes < oder < als end wirkt
$suchmuster = "/<\?[^>]+\/";
$string = preg_replace($suchmuster,"",$string);
//echo $encoding;
if (strpos(strtolower($encoding),"utf")!== false) {
$string = html_entity_decode($string, ENT_NOQUOTES, "UTF-8");
} else {
$string = html_entity_decode($string, ENT_NOQUOTES, "ISO-8859-1");
}
// nur fuer wdw dyn. descriptions:
if ($_SERVER['SERVER_NAME'] == "webdesign.weisshart.de") {
if ($description == ""){
$description = auslesen($string1, "description", '";');
if ($description != ""){
$description = strip_tags($description);
$description = preg_replace("/\n|\r|content|\"|=|\/|\?/", "", $description);
}
}
}
// und weil <title> nicht immer als Meta-tag codiert wird:
if ($titel == "") $titel = auslesen($string, "<title>", "</title>");
// weil es Leute gibt, die meta Tags mit Zeilenumbruch schreiben:
if ($description != ""){$description = str_replace("\n","",$description);}
if ($keywords != ""){$keywords = str_replace("\n","",$keywords);}
if ($titel != ""){$titel = str_replace("\n","",$titel);}
// Dateien nur zwischen den beiden limiter tags auswerten:
if ($limit_start != "") {
// Wurde needle nicht gefunden, gibt strpos() den boolean-Wert FALSE zurück.
if (strpos(strtolower($string),strtolower($limit_start)) !== false) {
$pos=strpos(strtolower($string),strtolower($limit_start)) + strlen($limit_start);
$substring_rest = substr($string,$pos);
} else {
if (isset($limit_only) && $limit_only === true) {$substring_rest = "";} //damit bricht die Suche ab, wenn $limit_start nicht gefunden wird.
else {$substring_rest = $string;}
}
} else {
$substring_rest = $string;
}
// wenn $limit_end gesetzt:
if ($limit_end != "") {
$end_pos=strpos(strtolower($substring_rest),strtolower($limit_end));
if ($end_pos !== false) {
$string = substr($substring_rest,0,$end_pos);
} else {
$string = $substring_rest;
}
} else {
$string = $substring_rest;
}
//Inhalt von tags auswerten:
if ($tags===false) $string = strip_tags($string);
// die meta tags in die Suche einschliessen gemaess config:
if ($tags === true) {$key=true; $desc=true; $tit=true;}
if ($key === true) $string=$string.$keywords;
if ($desc === true) $string=$string.$description;
if ($tit === true) $string=$string.$titel;
$string = str_replace("\n", " ", $string);
$string = str_replace("title>", "", $string); // wenn Treffer in <title> wird title> angezeigt?
// unerwuenschte Strings von der Suche ausschliessen
foreach($exclude_strings_merge as $k) {
$string = str_replace($k,"",$string);
}
// E-Mails raus: http://www.regular-expressions.info/email.html
$suchmuster = '/\b[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,4}\b/i';
$string = preg_replace($suchmuster,'', $string);
if (function_exists('mb_strtolower')){
if (mb_detect_encoding($search, 'UTF-8', true) !== false) { //nur so für PHP 7
$stringlow = mb_strtolower($string,'UTF-8');
$searchlow = mb_strtolower($search,'UTF-8');
} else {
$stringlow = strtolower($string);
$searchlow = strtolower($search);
}
} else {
$stringlow = strtolower($string);
$searchlow = strtolower($search);
}
// weil strtolower unter PHP 5.4 anscheinend nicht mehr tut
$umlaut_gross = array('Ä','Ö','Ü');
$umlaut_klein = array('ä','ö','ü');
$searchlow = str_replace($umlaut_gross, $umlaut_klein, $searchlow);
$stringlow = str_replace($umlaut_gross, $umlaut_klein, $stringlow);
# die und-Verknuepfung:
$or = false;
if ((strpos($searchlow," or ") !== false || strpos($searchlow," oder ") !== false) && isset($suchtip3or) && $ausdruck !== true ) { // Umschalten von und auf or
$or = true;
$searchlow = str_replace(" or ", " ", $searchlow);
$searchlow = str_replace(" oder ", " ", $searchlow);
}
# Wortgruppen
if ($ausdruck !== false) {
$searchlow = str_replace('"','',$searchlow);
$searchlow = str_replace('"','',$searchlow);
$search_arr[0] = $searchlow;
} else {
$search_arr = explode(" ",$searchlow);
}
$search_count = count($search_arr);
$i=0;
foreach ($search_arr as $search_word) {
if (@strpos($stringlow,$search_word) !== false) { // wenn Suchbegriff vorkommt, schneller als preg_match
$i++;
if ($or === true) {$i = $search_count = 1;} // der Hack, um bei OR nicht zu warten, bis alle Suchbegriffe gefunden werden
if ($i==$search_count) { // sobald alle Suchbegriffe gefunden wurden...
$stringlow = strip_tags($stringlow);
$test = @substr_count($stringlow, $search_word);
if ($search_count > 1){
$pos=strpos($stringlow,$search_word);
} else {
$pos=strpos($stringlow,$searchlow);
}
if ($vor >= $pos) {
$piece1 = substr($string,0,$nach);
} else {
$piece1 = substr($string,$pos-$vor,$vor+$nach);
$piece1 = strstr ($piece1," "); // vermeidet Bruchstuecke von Woertern am Anfang des Kontext
}
// $piece1 = substr($piece1, 0, strlen(strrchr($piece1,32))*(-1))." ..."; // vermeidet Bruchstuecke von Woertern am Ende des Kontext
$length = $nach+$vor; // Zeichenlänge
$piece1 = preg_replace( '/[^ ]*$/', '', substr( $piece1, 0, $length ) ) . ' …';
$rest = "<br />$piece1";
$fileforsize = $file;
if ($show_ext !== true) {
$info = pathinfo($file);
$file = basename($file,.$info['extension']);
}
if($vor=="0" && $nach=="0") $rest = "";
if(!$description == "" && $show_desc == true) $rest = "<br /><strong>$beschreib</strong> $description";
if($filename) $titel = $file;
if (isset($chave) && $chave == "321"){
// undocumented: nur dir zeigen
if (isset($show_dir_only) && $show_dir_only === true) {
$last_dir = explode('/', $dir);
$x = array_keys($last_dir);
$last_key = end($x) -1;
$titel = $last_dir[$last_key];
$file="";
}
}
if($titel == "") $titel = $file;
if (isset($query)){
$qdir = str_replace("./","",$dir); // entfernt das fuehrende ./ beim query string
if (isset($query_endung) && $query_endung == "no") {
$fext = array_pop(explode(, $file));
$fname = basename($file, .$fext);
$link = $query.$qdir.$fname;
} else {
$link = $query.$qdir.$file;
}
} else {
$link = $dir.$file;
}
if (isset($query)){
// if ($ausdruck === true) {
// $link = $link.'&q=%22'.$searchlow;
// } else {
// $link = $link."&q=".$searchlow;
// }
$link = $link."&q=".$searchlow;
} else {
// if ($ausdruck === true) {
// $link = $link.'?q=%22'.$searchlow;
// } else {
// $link = $link."?q=".$searchlow;
// }
$link = $link."?q=".$searchlow;
}
if ($_SERVER['SERVER_NAME'] == "webdesign.weisshart.de") {
// Umleiten von Kommentaren auf den Artikel:
if (strpos($link,'comment') !== false) {
$titel = str_replace("comment_","",$titel);
$titel = str_replace(".xml",".php",$titel);
$titel = 'Kommentar auf der Seite '.$titel;
$link = str_replace("comment_","",$link);
$link = str_replace(".xml",".php",$link);
}
// Jetzt Umleiten von md-Textfiles auf den Artikel:
if (strpos($link,'/markdown/') !== false) {
$link = str_replace("markdown/","",$link);
$link = str_replace("_text.txt",".php",$link);
$link = str_replace("pb_","",$link);
$titel = str_replace("./","",$link);
}
}
if (isset($chave) && $chave == "321"){
// Umleiten von Include-Dateien:
if (isset($redir_suffix) && isset($redir_replace)) {
$titel = str_replace($redir_suffix,$redir_replace,$titel);
$link = str_replace($redir_suffix,$redir_replace,$link);
}
}
if($titel != "") {
$titel = trim($titel);
if ($target == "blank") {
$ziel = ' target="_blank"';
$jump = false;
} elseif ($target == "parent") {
$ziel = ' target="_parent"';
$jump = false;
} elseif ($target != "") {
$ziel = ' target="'.$target.'"';
$jump = false;
} else {
$ziel = '';
}
// um den URI-Parameter q= zu unterdrücken => dann geht $targetwahl natürlich nicht mehr, weil linkopener in search.php "?q=" abfragt
if (isset($querystring) && $querystring === true) {$link = str_replace('?q='.$searchlow,'',$link);}
if ($pfad == true) {
if (isset($query)){
$url = " <a href=\"".$link."\"".$ziel.">".$prot.$pfadinfo.$link."</a> ";
} else {
//$link_anz = str_replace('#wdw_suche','',$link);
$link_anz = str_replace('%22','',$link);
$link_anz = str_replace('?q='.$searchlow,'',$link_anz);
$link_anz = str_replace('../','/',$link_anz);
$link_anz = str_replace('./','/',$link_anz);
if (strpos ($link,'..') !== false) {$pfadinfo = str_replace($p2,'',$pfadinfo);}
// $url = " <a href=\"".$link."\"".$ziel.">".$prot.$pfadinfo.substr($link,1)."</a> ";
$url = " <a href=\"".$link."\"".$ziel.">".$prot.$pfadinfo.$link_anz."</a> ";
}
} else {
$url = "";
}
if ($aend_dat == true) {
if ($dateform == "en") {
@$mod = $filedate.date("m/d/y", filemtime($dir.$fileforsize));
} elseif ($dateform == "de" || $dateform == "" || !isset($dateform)) {
@$mod = $filedate.date("d.m.y", filemtime($dir.$fileforsize));
} else {
@$mod = $filedate.date($dateform, filemtime($dir.$fileforsize));
}
$mod = "<span class='mod1'>".$mod."</span>";
} else {
$mod = "";
}
// ein Thumb einbinden, wenn eine Grafik-Datei mit gleichem Dateinamen im Ordner liegt
$thumb = '';
if (isset($chave) && $chave == "321" && $show_ext !== false) {
$extensions = array(".htm",".html",".shtml",".php",".php3",".php4",".php5", ".pdf");
$thumb = str_replace($extensions,$thumb_replace,$link);
}
$imglink = "";
$thumb = strtok($thumb, '?');
if (file_exists($thumb) && $thumb != $link) {
$imglink = '<a href ="'.$link.'" aria-hidden="true"><img src="'.$thumb.'" alt="Symbol der Seite "/></a>';
}
$treff_anz="";
if($treffer && $test>=1) $treff_anz="<span class='treffer'>[".$test." ".$treff."]</span>";
// so kann man alphabetisch sortieren: (Negertrick)
if (isset($alphasort) && $alphasort === true) {$test = $titel;}
// Treffer bei or nur einmal auflisten
if (!in_array($link, $bereits_found)) {
if ($or === true) {$bereits_found[] = $link;}
if ($pfad || $aend_dat) {
if ($iframe !== true) {
$array .= $test.$imglink."<a href=\"".$link."\"".$ziel.">".$titel."</a> ".$list_hx_end.$treff_anz.$rest."<span class='mod'>".$url."</span>".$mod."\n";
} else {
$array .= "$link\n";
}
} else {
if ($iframe !== true) {
$array .= $test.$imglink."<a href=\"".$link."\"".$ziel.">".$titel."</a> ".$list_hx_end.$treff_anz.$rest."\n";
} else {
$array .= "$link\n";
}
}
$found ++;
}
//$found ++;
}
}
}
}
// }
}
}
}
@closedir($verz);
}
echo '</p>';
if ($search == "§found") {echo 'Suchscript © 2005 webdesign.weisshart.de';exit;}
// Logdatei schreiben und Benachrichtigungs-Mail mit ip - Sperre:
// ip anonymisieren:
$reload_ip = $_SERVER["REMOTE_ADDR"];
$ip_array = explode(,$reload_ip);
$reload_ip = $ip_array[0]..$ip_array[1]..$ip_array[2].".xxx";
function schreiben($datei,$mode){
global $search, $reload_ip;
$fp = @fopen($datei,$mode);
fwrite($fp,$reload_ip."|".time()."|".$search."\n");
fclose($fp);
}
function ip_sperre() {
global $search, $reloadlimit, $installation_path,$reload_ip;
$reloadlogdatei = $installation_path.'/reload.txt';
$anzahleintraege = 100;
$ausgabe = false;
// Pruefen, ob reloaddatei existiert => ansonsten Erstellen
if(!file_exists($reloadlogdatei)) {
$datei = fopen($reloadlogdatei,"w+");
fclose($datei);
}
$fp = file($reloadlogdatei);
$size = sizeof($fp);
$ausgabe = false;
// Datei schreiben, wenn Liste voll:
if($size >= $anzahleintraege){
schreiben($reloadlogdatei,"w");
// Pruefen, ob eine IP in der Liste steht
} else {
for ($i=0;$i<$size;$i++) {
$zeile = explode("|",$fp[$i]);
if ($zeile[1] > time()-3 ||
$zeile[0] == $reload_ip && $zeile[1] > time()-6 ||
$zeile[0] == $reload_ip && trim($zeile[2]) == $search && $zeile[1] > (time()-$reloadlimit)) { // gleiche IP, reloadlimit und gleicher Suchbegriff
$ausgabe = true;
}
}
// Protokolliert die IP-Adresse (schreibt):
schreiben($reloadlogdatei,"a+");
}
return @$ausgabe;
}
// jetzt Logfile und Benachrichtigungs-Mail schreiben:
if(ip_sperre()===false) {
// Benachrichtigungs Mail:
if (function_exists('mb_strtolower')){
if (mb_detect_encoding($search, 'UTF-8', true) !== false) { //nur so für PHP 7
$suchbegriff_mail = htmlspecialchars($search, ENT_NOQUOTES, "UTF-8");
$suchbegriff_log = utf8_decode($suchbegriff_mail);
} else {
$suchbegriff_mail = htmlspecialchars($search, ENT_NOQUOTES, "ISO-8859-15");
$suchbegriff_log = $suchbegriff_mail;
}
} else {
$suchbegriff_mail = htmlspecialchars($search, ENT_NOQUOTES, "ISO-8859-15");
$suchbegriff_log = $suchbegriff_mail;
}
$header = 'From: '.$adminaddress.'\r\nX-Mailer: PHP/' . phpversion();
if($mail == true && $search != $value) {
if (!$sender) {$sender = "Suchscript";}
mail($adminaddress,"Suche auf $seite","$sender \n\nFolgender Begriff wurde soeben auf der Seite $seite gesucht: \n$suchbegriff_mail\nTreffer: $found",$header);
}
// Logfile schreiben:
$today = date("d.m.Y H:i ");
$nl = $today.$suchbegriff_log."(".$found.")\n";
$lines = file($installation_path.'/searchlog.txt');
$lines = array_unique($lines); // Duplikate loeschen
// Wenn mehr als $maxmsg (default:100) Logeintraege aelteste loeschen:
// $maxmsg = 100;
if(count($lines) > $maxmsg) unset($lines[0]);
$nl = implode("", $lines).$nl;
$fp2 = fopen($installation_path.'/searchlog.txt', 'wb');
fwrite($fp2, $nl);
fclose($fp2);
}
if($found == "0") {
echo $noresult;
if (strlen($search) > $length && $vorschlag != "") {
$syn = str_replace('"','',$search);
$syn = str_replace('"','',$search);
if (strpos(strtolower($encoding),"utf")!== false) {
$syn = mb_substr(trim($syn),0,$length,'utf-8');
} else {
$syn = substr(trim($syn),0,$length);
}
echo "<p>$vorschlag <a href =\"". basename($_SERVER['PHP_SELF'])."?q=$syn&gegen=&date=".time()."\">$syn</a>.</p>";
}
}
if($found == "1" && $jump == true && $_SERVER['PHP_SELF'] != substr($link,1)) { //das Suchscript selbst darf nicht angesprungen werden: Endlosschleife
$link = substr($link,1); //den Punkt vor dem dir weg
$link = str_replace('?q='.$searchlow,'',$link);
$search = str_replace('"','"',$search); // wegen searchterm.js
// doppelte slash vor Dateinamen unterdruecken
$dirname = dirname($_SERVER['PHP_SELF']);
if($dirname == "/") $dirname = "";
// backslash von Windows Servern raus:
$dirname = str_replace("\\","",$dirname);
if (isset($query)){
header("Location: //".$_SERVER['HTTP_HOST'].$dirname."/".$link."&q=".$search);
} else {
header("Location: //".$_SERVER['HTTP_HOST'].$dirname.$link."?q=".$search);
}
exit;
}
if($found > "1") {
$n = $plural; $e = "e"; $s = "s";
} else {
$e = $n = $s = "";
}
if($found >= "1") {
$array = explode("\n", $array);
if (isset($alphasort) && $alphasort === true) {
sort($array);
} else {
natsort($array);
}
reset($array);
if (!isset($reversesort)) {$array = array_reverse($array);}
$i = $anz_dat;
// anstelle der while ein for Schleife, wenn ich weitere Seiten anzeigen will:
$next=0;
if(isset($_GET["next"]) || isset($_POST["next"])) {
if (isset($_GET["next"]) && $_GET["next"] != "") $next = $_GET["next"];
if (isset($_POST["next"]) && $_POST["next"] != "") $next = $_POST["next"];
}
$next1=$next+1;
$weiter=$next+$anz_dat;
for($count = 0 + $next; $count < $anz_dat + $next; $count++) {
if ($iframe !== true) {
if (@$array[$count]) $ausgabe .= "<li>".$list_hx_start.substr(strstr($array[$count], '<a href'),0)."</li>\n";
} else {
if (@$array[$count]) $ausgabe .= "<iframe class='searchiframe' src='".$array[$count]."'></iframe>\n";
}
}
if (!isset($foundtxt1)){$foundtxt1 = "Ihr Suchbegriff wurde auf ";}
if (!isset($foundtxt2)){$foundtxt2 = "Seite";}
if (!isset($foundtxt3)){$foundtxt3 = " gefunden";}
$leer = " ";
if ($foundtxt3 =="") {$leer = "";}
echo '<p>'.$foundtxt1.'<strong> '.$found.' </strong>'.$foundtxt2.$n.$leer.$foundtxt3;
if ($next == 0) {
if ($anz_dat < $found) {
if (isset($angezeigttxt)){
echo $angezeigttxt;
} else {
echo "<br />Angezeigt werden <strong>$anz_dat</strong> Ergebnisse pro Seite";
}
}
// if($treffer && $found > 1 && $or === false) {
if($treffer && $found > 1) {
if (isset($sorttxt)){
$sorthinweis = $sorttxt;
} else {
$sorthinweis = ", sortiert nach [Anzahl der Treffer pro Dokument]";
}
}
echo "$sorthinweis.";
}
echo "</p>";
// Neues Fenster
if ($target == "" && $targetwahl == true) {
echo'
<script>
if(document.cookie.indexOf(\'suchoeffnen\') !== -1){
addEvent(window, \'load\', linkopener);
document.write (\'<form action=""><p class="linkopener"><input type="checkbox" checked="checked" onchange="linkcookie()" onclick="linkopener(this.checked)" id="linksnewwin1" /> <label for="linksnewwin1">Treffer in neuem Fenster öffnen? <\/label><\/p><\/form>\');
} else {
document.write (\'<form action=""><p class="linkopener"><input type="checkbox" onchange="linkcookie()" onclick="linkopener(this.checked)" id="linksnewwin1" /> <label for="linksnewwin1">Treffer in neuem Fenster öffnen? <\/label><\/p><\/form>\');
}
</script>
';
}
$list_art="ul";
if ($num_list)$list_art="ol start=$next";
// um XML Fehler (HTML Tidy Warnungen) zu unterbinden:
// http://www.timreeves.de/neu/webdesign/web-20.php
$suchmuster = '/&(?!([a-zA-Z]{2,7}|#\d+|#x[0-9a-fA-F]+);)/i';
$ersetzung = '&';
$ausgabe = preg_replace($suchmuster, $ersetzung, $ausgabe);
if ($iframe !== true) {
if ($num_list) {
echo "\n<ol start='".$next1."'>\n".$ausgabe."</ol>\n";
} else {
echo "\n<ul>\n".$ausgabe."</ul>\n";
}
} else {
echo "\n".$ausgabe."\n";
}
// if ($next < ($found - $anz_dat)) {
if ($method == "GET") {
//next raus, weils sonst x-mal angehaengt wird:
$querystring = "";
if(isset($_SERVER["QUERY_STRING"])) {
$querystring = $_SERVER["QUERY_STRING"];
$firstquery = strpos($querystring,"&next");
if ($firstquery !== false) {
$querystring = substr($querystring,0,$firstquery);
}
}
$previous = $weiter - ($anz_dat * 2);
$querystring = str_replace("&","&",$querystring);
echo '<p class="weiter">';
if ($next >= $anz_dat) {
echo '<a href="'.basename($_SERVER["PHP_SELF"]).'?'.$querystring.'&next='.$previous.'">'.$zuruecktxt.'</a>';
// echo '<script>document.write ("<a href=\"javascript:history.back()\">'.$zuruecktxt.'</a>")</script>';
}
if ($next >= $anz_dat && $next < ($found - $anz_dat)) {
echo ' | ';
// echo '<script>document.write (" | ")</script>';
}
if ($next < ($found - $anz_dat)) {
echo '<a href="'.basename($_SERVER["PHP_SELF"]).'?'.$querystring.'&next='.$weiter.'">'.$weitertxt.'</a>';
}
echo'</p>';
}
// }
}
}
else {echo $minlength;}
}
if($found >= "1" || !isset($_GET["q"]) ) {
$ulstart = "$searchtip0<div id='suchtipps' class='klappen' >\n<ul>\n";
} else {
$ulstart = "$searchtip0<div id='suchtipps' >\n<ul>\n";
}
$ulend = "</ul>\n</div>\n";
if ($tipps) {$searchtip = $ulstart.$searchtip1.$searchtip2.$searchtip3.$searchtip31.$searchtip3or.$searchtip4.$ulend; }else {$searchtip ="";}
echo $searchtip;
$mtime = microtime(); $mtime = explode( ' ', $mtime); $mtime = $mtime[1] + $mtime[0];
$such_ende = $mtime;
$time_gesamt = $such_ende - $such_start;
echo "<div id=\"searchfooter\"><p>";
if (isset($anzahldat)){
$zdat = $anzahldat;
} else {
$zdat = "Anzahl durchsuchter Dateien: ";
}
if ($zahlzeig && $found > 0) echo $zdat.$durchsucht."<br />";
if ($found > 0 ) {
if (isset($timetxt)){
$timehinweis = $timetxt;
} else {
$timehinweis = "Suche ausgeführt in ";
}
if($dauer) {
echo "$timehinweis".number_format($time_gesamt,2,',',)." $suchdauer $version\n";
} else {
echo "\n$version\n";
}
} else {
echo "\n$version\n";
}
echo "</p></div>";
echo $wdw;
© 2023 Quttera Ltd. All rights reserved.