Seite 1 von 1

PHP suche - suchresultate in einem neuen fenster anzeigen?

Verfasst: 10.11.2009, 19:55
von croxxx69
hallo,

wollte die google suche (fuer die eigene seite) nicht auf meine seite installieren weil die sehr unuebersichtlich ist, darum habe ich diese suche gefunden:

Code: Alles auswählen

<?php
// Domain-Name für die Anzeige in den Resultaten
$DomainName = "http&#58;//".GetParam&#40;"SERVER_NAME", "S"&#41;;

// Root-Verzeichnis für den Zugriff auf die Dateien am Server
// Beispiel&#58; $RootDir=dirname&#40;"/htdocs"&#41;;
$RootDir = dirname&#40;GetParam&#40;"SCRIPT_FILENAME", "S"&#41;&#41;;

// Dateiname für die Protokollierung der Suchbegriffe
// &#40;kein Dateiname zum deaktivieren der Protokollierung&#41;
// z.B. "../../files/logs/search_words.log"
$SearchWordLog = "";

// Länge der Textfragmente um die Fundstellen &#40;in Zeichen&#41;
$Found_Piece_Len = 50;

// Erlaubtes Verzeichnis
// Z.B.&#58; $AllowedDirs = $RootDir."/content";
$AllowedDir = $RootDir;

// Erlaubte Erweiterungen als Array, getrennt mit einem Beistrich
// Z.B.&#58; $AllowedExts=array&#40;".php",".php3",".php4",".htm",".html",".ihtml",".shtm",".shtml",".txt"&#41;;
$AllowedExts = array&#40;".php",".html",".shtml"&#41;;

// Deutsche Umlaute dekodieren &#40;dadurch wird beispielsweise "&auml;" zu "ä"&#41;
$ActivateUmlaut = true;

// Links zu den gefundenen Seiten in einem neuen Tab/Fenster öffnen
$LinkTargetBlank = true;

// *****************************************************************************

?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<head>
<title>Suche</title>

<meta name="title" content="Suche">
<meta name="author" content="Werner Rumpeltesz">
<meta name="robots" content="noindex,nofollow">
<meta http-equiv="content-language" content="de-at">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<link rel=stylesheet type="text/css" href="search.css">

</head>
<body>



<h4>Tražilica</h4>

<?php
  $SearchTerm = FormatSearchString&#40;stripslashes&#40;GetParam&#40;"q", "P"&#41;&#41;&#41;;
  if &#40;!$SearchTerm&#41; $SearchTerm = FormatSearchString&#40;stripslashes&#40;GetParam&#40;"q", "G"&#41;&#41;&#41;;
?>

<table border=0 cellspacing=0 cellpadding=0><tr><td>
<form class=formbox action="<?php echo GetParam&#40;"PHP_SELF", "S"&#41;; ?>" method="post">
<table border=0 cellspacing=0 cellpadding=1>
<tr>
  <td class=formfield nowrap>Traži&#58;&nbsp;</td><td><input type="text" name="q" size=40 maxlength=250 value="<?=$SearchTerm?>"></td></tr>
<tr><td></td><td class=formfield><input type="submit" value="Prona&#273;i" name="submit"></td></tr>
</table>
</form>
</td></tr></table>

<br>

<?php

if&#40;$SearchTerm&#41;&#123;
  // Protokollierung der Suchbegriffe
  if&#40;file_exists&#40;$SearchWordLog&#41;&#41; &#123;
    $fp=@fopen&#40;$SearchWordLog,"a"&#41;;
    if&#40;$fp&#41; &#123;
      flock&#40;$fp,2&#41;;
      fputs&#40;$fp,$SearchTerm."\r\n",256&#41;;
      flock&#40;$fp,3&#41;;
      fclose&#40;$fp&#41;;
    &#125;
  &#125;

  echo "<h4>Rezultati</h4>\n";

  $files=ReadDirs&#40;$AllowedDir,$AllowedExts&#41;;

  $ResultCount=0;
  if&#40;$files && $SearchTerm&#41;&#123;
    foreach&#40;$files as $f&#41;&#123;
      if&#40;SearchFile&#40;$f,$SearchTerm&#41;&#41;&#123;
        $fn=$f;
        if&#40;substr&#40;$f,0,strlen&#40;$RootDir&#41;&#41;==$RootDir&#41; $fn=$DomainName.substr&#40;$f,strlen&#40;$RootDir&#41;&#41;;
        $ResultCount++;
        echo $ResultCount.". ";
        echo '<a href="'.$fn.'"';
        if &#40;$LinkTargetBlank&#41; echo ' target="_blank"';
        echo "><b>".$Site_Title."</b></a><br>\n";
        if&#40;$Meta_Description&#41; echo $Meta_Description."<br>\n";
        echo "<span class=small><span class=grey>".$Site_Content."</span></span><br>\n";
        echo "<span class=grey>Datei&#58;</span> <span class=green>".$fn."</span>";
        echo " - ";
        echo "<span class=grey>Größe&#58;</span> <span class=green>".round&#40;filesize&#40;$f&#41;/1024,2&#41;." KB</span>";
        echo "<br>";
        echo "<br>\n";
      &#125;
    &#125;
    clearstatcache&#40;&#41;;
  &#125;
  echo "Prona&#273;eni su&#58; <b>".$ResultCount."</b> stranica.<br>\n";
&#125;

function SearchFile&#40;$url,$search&#41;&#123;
  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&#40;$url&#41;;
  while&#40;list&#40;$key,$val&#41;=each&#40;$gmtarray&#41;&#41;&#123;
    switch&#40;strtolower&#40;$key&#41;&#41;&#123;
      case "title"&#58; $Meta_Title=$val; break;
      case "keywords"&#58; $Meta_Keywords=$val; break;
      case "description"&#58; $Meta_Description=$val; break;
      case "robots"&#58; $Meta_Robots=strtolower&#40;$val&#41;; break;
      case "revisit"&#58; $Meta_Revisit=strtolower&#40;$val&#41;; break;
      case "revisit-after"&#58; $Meta_RevisitAfter=strtolower&#40;$val&#41;; break;
    &#125;
  &#125;
  $Meta_Description="";

  // *** Dateiinhalt einlesen &#40;bzw. Ausgabe bei PHP&#41; ***
  $fp=@fopen&#40;$url,"r"&#41;;
  if&#40;!$fp&#41; return false;
  $content="";
  while&#40;!feof&#40;$fp&#41;&#41;&#123;
    $content.=fgets&#40;$fp,10240&#41;;
  &#125;
  fclose&#40;$fp&#41;;
  
  $content = preg_replace&#40;"/<\?.*?\?>/s", "", $content&#41;;

  $content = $Meta_Title." ".$Meta_Keywords." ".$Meta_Description." ".trim&#40;$content&#41;;

  // *** Seitentitel ermitteln ***
  $Site_Title = GetSiteTitle&#40;$content&#41;;
  if&#40;!$Site_Title&#41; $Site_Title = $Meta_Title;
  if&#40;!$Site_Title&#41; $Site_Title = basename&#40;$url&#41;;

  if &#40;substr&#40;$content, 0, strlen&#40;$Site_Title&#41;&#41; == $Site_Title&#41; $content = substr&#40;$content, strlen&#40;$Site_Title&#41;&#41;;

  $content = strip_tags&#40;$content&#41;;
  $content = str_replace&#40;"\n", " ", $content&#41;;
  $content = str_replace&#40;"\r", "", $content&#41;;
  $sc = " ".trim&#40;$content&#41;;

  while&#40;strpos&#40;$sc,"  "&#41;&#41;&#123;
    $sc=str_replace&#40;"  "," ",$sc&#41;;
  &#125;
  $content=$sc;

  // Deutsche Umlaute konvertieren
  if&#40;$ActivateUmlaut&#41;&#123;
    $content=str_replace&#40;"&auml;","ä",$content&#41;;
    $content=str_replace&#40;"&ouml;","ö",$content&#41;;
    $content=str_replace&#40;"&uuml;","ü",$content&#41;;
    $content=str_replace&#40;"&Auml;","Ä",$content&#41;;
    $content=str_replace&#40;"&Ouml;","Ö",$content&#41;;
    $content=str_replace&#40;"&Uuml;","Ü",$content&#41;;
    $content=str_replace&#40;"&szlig;","ß",$content&#41;;
  &#125;
  $content=str_replace&#40;"&euro;","€",$content&#41;;
  $content=str_replace&#40;"&nbsp;"," ",$content&#41;;

  // *** Suchen ***
  $found=false;
  $a=explode&#40;" ",strtolower&#40;$search&#41;&#41;;
  $lowcontent=strtolower&#40;$content&#41;;
  $result_text="";
  foreach&#40;$a as $arg&#41;&#123;
    $p0=strpos&#40;$lowcontent,$arg&#41;;
    if&#40;$p0>0&#41;&#123;
      $p1=$Found_Piece_Len;
      $p2=$Found_Piece_Len;
      if &#40;&#40;$p0-$p1&#41; < 0&#41; $p1=$p0;
      $result_text.="...".substr&#40;$content,$p0-$p1,$p1&#41;."<b class=red>";
      $result_text.=substr&#40;$content,$p0,strlen&#40;$arg&#41;&#41;."</b>".substr&#40;$content,$p0+strlen&#40;$arg&#41;,$p2&#41;;
      $found=true;
    &#125;else&#123;
      $found=false;
      break;
    &#125;
  &#125;

  if&#40;!$found&#41; return false;
  if&#40;$result_text&#41; $result_text.="...";

  $Site_Content=$result_text;

  return true;
&#125;

function FormatSearchString&#40;$search&#41;&#123;
  $chars=".&#58;-_,;!§$%&/&#40;&#41;=#+*~'?\&#91;|&#93;&#123;^°&#125;²³µ@€ š&#273;ž&#263;&#269;äöüß1234567890abcdefghijklmnopqrstuvwxyz";
  $s="";
  for&#40;$i=0;$i<strlen&#40;$search&#41;;$i++&#41;&#123;
    $a=substr&#40;$search,$i,1&#41;;
    if&#40;stristr&#40;$chars,$a&#41;&#41; $s.=$a;
  &#125;
  while&#40;strpos&#40;$s,"  "&#41;&#41;&#123;
    $s=str_replace&#40;"  "," ",$s&#41;;
  &#125;
  return trim&#40;$s&#41;;
&#125;

function ReadDirs&#40;$d,$ExtArray&#41;&#123;
  $fileArray=array&#40;&#41;;
  if&#40;$hDir = opendir&#40;$d&#41;&#41;&#123;
    while&#40;$file=readdir&#40;$hDir&#41;&#41;&#123;
      if&#40;!is_dir&#40;$d."/".$file&#41;&#41;&#123;
        // *** .*-Dateien &#40;zB .htaccess&#41; ignorieren ***
        if&#40;substr&#40;$file,0,1&#41;!="."&#41;&#123;
              foreach&#40;$ExtArray as $ext&#41;&#123;
                if&#40;substr&#40;strtolower&#40;$file&#41;,strlen&#40;$file&#41;-strlen&#40;$ext&#41;,strlen&#40;$ext&#41;&#41;==strtolower&#40;$ext&#41;&#41;&#123;
                    array_push&#40;$fileArray,$d."/".$file&#41;;
                    continue;
                &#125;
              &#125;
          &#125;
      &#125;
    &#125;
    closedir&#40;$hDir&#41;;
  &#125;
  return $fileArray;
&#125;

function GetSiteTitle&#40;$content&#41;
&#123;
  $p1=strpos&#40;strtolower&#40;$content&#41;,"<title>"&#41;;
  if&#40;!$p1&#41; return false;
  $p2=strpos&#40;strtolower&#40;$content&#41;,"</title>",$p1&#41;;
  if&#40;!$p2&#41; return false;
  return trim&#40;substr&#40;$content,$p1+7,$p2-$p1-7&#41;&#41;;
&#125;

function GetParam&#40;$ParamName, $Method = "P", $DefaultValue = ""&#41; &#123;
  if &#40;$Method == "P"&#41; &#123;
    if &#40;isset&#40;$_POST&#91;$ParamName&#93;&#41;&#41; return $_POST&#91;$ParamName&#93;; else return $DefaultValue;
  &#125; else if &#40;$Method == "G"&#41; &#123;
    if &#40;isset&#40;$_GET&#91;$ParamName&#93;&#41;&#41; return $_GET&#91;$ParamName&#93;; else return $DefaultValue;
  &#125; else if &#40;$Method == "S"&#41; &#123;
    if &#40;isset&#40;$_SERVER&#91;$ParamName&#93;&#41;&#41; return $_SERVER&#91;$ParamName&#93;; else return $DefaultValue;
  &#125;
&#125;

?>



</body>
</html>
eigentlich ganz ok, nur leider oeffnet mir die suche im selben fenster die ergebnisse, was mir leider nicht gefaellt... wie kann ich dies aendern?


lg!

Verfasst:
von

Verfasst: 10.11.2009, 23:02
von SloMo
<form class=formbox action="<?php echo GetParam("PHP_SELF", "S"); ?>" method="post" target="_blank">

Verfasst: 11.11.2009, 14:58
von croxxx69
geht leider nicht... es oeffnet sich eine neue seite... aber nichts geschieht...

sagen wir mal ich moechte die ergebnisse auf der seite ergebnisse.html oeffnen... kann man das irgendwie?

Verfasst:
von
Content Erstellung von ABAKUS Internet Marketing
Ihre Vorteile:
  • einzigartige Texte
  • suchmaschinenoptimierte Inhalte
  • eine sinnvolle Content-Strategie
  • Beratung und Umsetzung
Jetzt anfragen: 0511 / 300325-0

Verfasst: 11.11.2009, 18:49
von nerd
wenn du die ergebnisse auf der selben seite ohne eine nkompletten reload oeffnen willst brauchst du ajax; query oder so...

Verfasst: 11.11.2009, 20:57
von Kassandra70
also bei mir funktioniert das wunderbar:
<form class=formbox action="<?php echo GetParam("PHP_SELF", "S"); ?>" method="post" target="_blank"> neue Seite öffnet sich und gut.

hast du denn bei action was geändert?
-
ansonsten
ganzer code auf seite suche.php packen
ganzen code auf seite ergebnisse.php packen
aus der action da oben ergebnisse.php machen, gucken was das S da soll, bei mir hatte das ignorieren aber keine sichtbaren Auswirkungen
und fertig.
wenn die Zielseite unbedignt ergebnisse.html sein soll, dann kannst du Zielseite auch so nennen, mußt aber deinem Server über die .htacess mitteilen, dass er auch html als php behandeln soll ...