php zoekfunctie werkt niet.

Status
Niet open voor verdere reacties.

marc 05

Gebruiker
Lid geworden
5 sep 2006
Berichten
227
Ik wil het onderstaande script gebruiken om mijn site te doorzoeken.... heb het werkend gezien maar ik krijg het zelf niet aan de praat.

Waar zou ik de eventuele surfernaam moeten invullen: is dit tussen "http://hier dus" oof tussen de haakjes in "server_name" en wat moet ik dan met "http://"doen? en waar dient de poort ingevuld te worden - is dit tussen de "." of "server_port"

verder zie ik in het script : html staan, al mijn pagina`s hebben de extensie php, hoe voeg ik deze hier ook nog aan toe?

$s_files = "html|HTML"; // Op welke extensies zoeken?

Groeten, Marc




PHP:
<?php
$my_server = "http://".getenv("SERVER_NAME").":".getenv("SERVER_PORT"); // Jouw server (gewoonlijk hoef je dit niet te veranderen)
$my_root = getenv("DOCUMENT_ROOT"); // Jouw document root (gewoonlijk hoef je dit niet te veranderen)
$s_dirs = array("/php","/javascript","/css","/php-manual"); // In welke directories moet gezocht worden? ("/dir1","/dir2","/dir1/subdir2","/nogeenandere/directory")? --> $s_dirs = array(""); met de laatste zoek je op de hele server
$s_skip = array("..",".","subdir2","programma-code","php-site-zoek-functie.html"); // Welke files of directories moeten er overgeslagen worden?
$s_files = "html|HTML"; // Op welke extensies zoeken? 
$min_chars = "3"; // Minimum aantal letters (cijfers) wat in de zoekbox moet worden ingevuld
$max_chars = "30"; // Maximum aantal letters (cijfers) wat in de zoekbox mag worden ingevuld
$default_val = "zoekwoord"; // Default waarde van zoekveld
$limit_hits = array("10","25","50","100"); // Hoeveel zoekhits moeten er getoond worden, om het selectmenu niet te tonen voer je gewoon een vaste waarde in --> array("100")
$message_1 = "ongeldige zoekterm"; // ongeldige zoekterm
$message_2 = "voer op z`n minst in $min_chars, en maximaal $max_chars tekens."; // geen goede invoer lengte ($min_chars/$max_chars)
$message_3= "zoekresultaten voor "; // zoekresultaat
$message_4 = "oops, niets gevonden."; // noppes
$message_5 = "vinden"; // hoeveel zoekhits wil je hebben
$message_6 = "Match hoofdletters"; // hoofd of kleine letters exact of onbelangrijk
$no_title = "klik voor content"; // als er geen 'title' te vinden is laat je deze tekst zien
$limit_extracts_extracts = ""; // Hoeveel extracts per file wil je laten zien. Default: "" --> elke extract, alternatief: 'integer' b.v. "3"
$byte_size = "51200"; // Hoeveel bytes per pagina mag worden gezocht? Hoe minder, hoe sneller...
function search_form($HTTP_GET_VARS, $limit_hits, $default_val, $message_5, $message_6, $PHP_SELF) {
	@$keyword=$HTTP_GET_VARS['keyword'];
	@$case=$HTTP_GET_VARS['case'];
	@$limit=$HTTP_GET_VARS['limit'];
	echo "<form action=\"$PHP_SELF\" method=\"get\">\n",
	"<div><input type=\"hidden\" value=\"SEARCH\" name=\"action\" />\n",
	"<input type=\"text\" name=\"keyword\" class=\"text\" size=\"10\"  maxlength=\"30\" value=\"" ;
	if(!$keyword)
		echo "$default_val";
	else
		echo str_replace("&amp;","&",htmlentities($keyword));
	echo "\" ";
	echo "onfocus=\" if (value == '";
	if(!$keyword)
		echo "$default_val"; 
	else
		echo str_replace("&amp;","&",htmlentities($keyword));
	echo "') {value=''}\" onblur=\"if (value == '') {value='";
	if(!$keyword)
		echo "$default_val"; 
	else
		echo str_replace("&amp;","&",htmlentities($keyword));
	echo "'}\" /> ";
	$j=count($limit_hits);
	if($j==1)
		echo "<input type=\"hidden\" value=\"".$limit_hits[0]."\" name=\"limit\" />";
	elseif($j>1) {
		echo
		"<select name=\"limit\" class=\"select\">\n";
		for($i=0;$i<$j;$i++) {
			echo "<option value=\"".$limit_hits[$i]."\"";
			if($limit==$limit_hits[$i])
				echo "";
			echo ">".$limit_hits[$i]." $message_5</option>\n";
			}
		echo "</select> ";
		}
	echo
	"<input type=\"submit\" value=\"OK\" class=\"button\" />\n",
	"<span class=\"checkbox\"><br />$message_6</span> <input type=\"checkbox\" name=\"case\" value=\"true\" class=\"checkbox\"";
	if($case)
		echo " CHECKED";
	echo
	" />\n",
	"\n",
	"</div></form>\n";
	}
function search_headline($HTTP_GET_VARS, $message_3) {
	@$keyword=$HTTP_GET_VARS['keyword'];
	@$action=$HTTP_GET_VARS['action'];
	if($action == "SEARCH") 
	echo "<h2 class=\"result\">$message_3 '<span class='schuinetekst'>".htmlentities(stripslashes($keyword))."</span>'</h2>";
	}
function search_error($HTTP_GET_VARS, $min_chars, $max_chars, $message_1, $message_2, $limit_hits) {
	global $HTTP_GET_VARS;
	@$keyword=$HTTP_GET_VARS['keyword'];
	@$action=$HTTP_GET_VARS['action'];
	@$limit=$HTTP_GET_VARS['limit'];
	if($action == "SEARCH") { 
		if(strlen($keyword)<$min_chars||strlen($keyword)>$max_chars||!in_array ($limit, $limit_hits)) { // Ist die Anfrage in Ordnung (min. '$min_chars' Zeichen, max. '$max_chars' Zeichen)?
			echo "<p class=\"result\">&nbsp;&nbsp;&nbsp;<span class='vettetekst'>$message_1</span><br />&nbsp;&nbsp;&nbsp; $message_2</p>";
			$HTTP_GET_VARS['action'] = "ERROR"; 
			}
		}
	}
function search_dir($my_server, $my_root, $s_dirs, $s_files, $s_skip, $message_1, $message_2, $no_title, $limit_extracts, $byte_size, $HTTP_GET_VARS) {
	global $count_hits;
	@$keyword=$HTTP_GET_VARS['keyword'];
	@$action=$HTTP_GET_VARS['action'];
	@$limit=$HTTP_GET_VARS['limit'];
	@$case=$HTTP_GET_VARS['case'];
	if($action == "SEARCH") { 
		foreach($s_dirs as $dir) { 
			$handle = @opendir($my_root.$dir);
			while($file = @readdir($handle)) {
				if(in_array($file, $s_skip)) { 
					continue;
					}
				elseif($count_hits>=$limit) {
					break; 
					}
				elseif(is_dir($my_root.$dir."/".$file)) { 
					$s_dirs = array("$dir/$file");
					search_dir($my_server, $my_root, $s_dirs, $s_files, $s_skip, $message_1, $message_2, $no_title, $limit_extracts, $byte_size, $HTTP_GET_VARS); 
					}
				elseif(preg_match("/($s_files)$/i", $file)) { 
					$fd=fopen($my_root.$dir."/".$file,"r");
					$text=fread($fd, $byte_size); // 50 KB
					$keyword_html = htmlentities($keyword);
					if($case) { 
						$do=strstr($text, $keyword)||strstr($text, $keyword_html);
						}
					else {
						$do=stristr($text, $keyword)||stristr($text, $keyword_html);
						}
					if($do)	{
						$count_hits++; 
						if(preg_match_all("=<title[^>]*>(.*)</title>=siU", $text, $titel)) { 
							if(!$titel[1][0]) 
								$link_title=$no_title; 
							else
								$link_title=$titel[1][0];  
							}
						else {
							$link_title=$no_title; 
							}
						echo "&nbsp;&nbsp;&nbsp;&nbsp;<a href=\"$my_server$dir/$file\" class=\"result\">$count_hits.  $link_title</a><br />"; 
						$auszug = strip_tags($text);
						$keyword = preg_quote($keyword); // unescapen
						$keyword = str_replace("/","\/","$keyword");
						$keyword_html = preg_quote($keyword_html); // unescapen
						$keyword_html = str_replace("/","\/","$keyword_html");
						echo "&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class=\"extract\">";
						if(preg_match_all("/((\s\S*){0,3})($keyword|$keyword_html)((\s?\S*){0,3})/i", $auszug, $match, PREG_SET_ORDER)); {
							if(!$limit_extracts)
								$number=count($match);
							else
								$number=$limit_extracts;
							for ($h=0;$h<$number;$h++) { 
								if (!empty($match[$h][3]))
									printf("<span class='schuinetekst'><span class='vettetekst'>..</span> %s<span class='vettetekst'>%s</span>%s <span class='vettetekst'>..</span></span>", $match[$h][1], $match[$h][3], $match[$h][4]);
								}
							}
						echo "</span><br /><br />";
						flush();
						}
					fclose($fd);
					}
				}
	  		@closedir($handle);
			}
		}
	}
function search_no_hits($HTTP_GET_VARS, $count_hits, $message_4) {
	@$action=$HTTP_GET_VARS['action'];
	if($action == "SEARCH" && $count_hits<1) 
		echo "<p class=\"result\">$message_4</p>";
	}
?>
 
wil je dit eens testen

PHP:
<?php
$my_server = "http://".getenv("SERVER_NAME").":".getenv("SERVER_PORT"); // Jouw server (gewoonlijk hoef je dit niet te veranderen)
$my_root = getenv("DOCUMENT_ROOT"); // Jouw document root (gewoonlijk hoef je dit niet te veranderen)
$s_dirs = array("/php","/javascript","/css","/php-manual"); // In welke directories moet gezocht worden? ("/dir1","/dir2","/dir1/subdir2","/nogeenandere/directory")? --> $s_dirs = array(""); met de laatste zoek je op de hele server
$s_skip = array("..",".","subdir2","programma-code","php-site-zoek-functie.html"); // Welke files of directories moeten er overgeslagen worden?
$s_files = "html|HTML|php|php3|php4|php5|PHP"; // Op welke extensies zoeken? 
$min_chars = "3"; // Minimum aantal letters (cijfers) wat in de zoekbox moet worden ingevuld
$max_chars = "30"; // Maximum aantal letters (cijfers) wat in de zoekbox mag worden ingevuld
$default_val = "zoekwoord"; // Default waarde van zoekveld
$limit_hits = array("10","25","50","100"); // Hoeveel zoekhits moeten er getoond worden, om het selectmenu niet te tonen voer je gewoon een vaste waarde in --> array("100")
$message_1 = "ongeldige zoekterm"; // ongeldige zoekterm
$message_2 = "voer op z`n minst in $min_chars, en maximaal $max_chars tekens."; // geen goede invoer lengte ($min_chars/$max_chars)
$message_3= "zoekresultaten voor "; // zoekresultaat
$message_4 = "oops, niets gevonden."; // noppes
$message_5 = "vinden"; // hoeveel zoekhits wil je hebben
$message_6 = "Match hoofdletters"; // hoofd of kleine letters exact of onbelangrijk
$no_title = "klik voor content"; // als er geen 'title' te vinden is laat je deze tekst zien
$limit_extracts_extracts = ""; // Hoeveel extracts per file wil je laten zien. Default: "" --> elke extract, alternatief: 'integer' b.v. "3"
$byte_size = "51200"; // Hoeveel bytes per pagina mag worden gezocht? Hoe minder, hoe sneller...
function search_form($HTTP_GET_VARS, $limit_hits, $default_val, $message_5, $message_6, $PHP_SELF) {
    @$keyword=$HTTP_GET_VARS['keyword'];
    @$case=$HTTP_GET_VARS['case'];
    @$limit=$HTTP_GET_VARS['limit'];
    echo "<form action=\"$PHP_SELF\" method=\"get\">\n",
    "<div><input type=\"hidden\" value=\"SEARCH\" name=\"action\" />\n",
    "<input type=\"text\" name=\"keyword\" class=\"text\" size=\"10\"  maxlength=\"30\" value=\"" ;
    if(!$keyword)
        echo "$default_val";
    else
        echo str_replace("&amp;","&",htmlentities($keyword));
    echo "\" ";
    echo "onfocus=\" if (value == '";
    if(!$keyword)
        echo "$default_val"; 
    else
        echo str_replace("&amp;","&",htmlentities($keyword));
    echo "') {value=''}\" onblur=\"if (value == '') {value='";
    if(!$keyword)
        echo "$default_val"; 
    else
        echo str_replace("&amp;","&",htmlentities($keyword));
    echo "'}\" /> ";
    $j=count($limit_hits);
    if($j==1)
        echo "<input type=\"hidden\" value=\"".$limit_hits[0]."\" name=\"limit\" />";
    elseif($j>1) {
        echo "<select name=\"limit\" class=\"select\">\n";
        for($i=0;$i<$j;$i++) {
            echo "<option value=\"".$limit_hits[$i]."\"";
            if($limit==$limit_hits[$i])
                echo "";
            echo ">".$limit_hits[$i]." $message_5</option>\n";
        }
        echo "</select> ";
    }
    echo "<input type=\"submit\" value=\"OK\" class=\"button\" />\n",
    "<span class=\"checkbox\"><br />$message_6</span> <input type=\"checkbox\" name=\"case\" value=\"true\" class=\"checkbox\"";
    if($case)
        echo " CHECKED";
        echo " />\n","\n","</div></form>\n";
}

function search_headline($HTTP_GET_VARS, $message_3) {
    @$keyword=$HTTP_GET_VARS['keyword'];
    @$action=$HTTP_GET_VARS['action'];
    if($action == "SEARCH") 
    echo "<h2 class=\"result\">$message_3 '<span class='schuinetekst'>".htmlentities(stripslashes($keyword))."</span>'</h2>";
}

function search_error($HTTP_GET_VARS, $min_chars, $max_chars, $message_1, $message_2, $limit_hits) {
    global $HTTP_GET_VARS;
    @$keyword=$HTTP_GET_VARS['keyword'];
    @$action=$HTTP_GET_VARS['action'];
    @$limit=$HTTP_GET_VARS['limit'];
    if($action == "SEARCH") { 
        if(strlen($keyword)<$min_chars||strlen($keyword)>$max_chars||!in_array ($limit, $limit_hits)) { // Ist die Anfrage in Ordnung (min. '$min_chars' Zeichen, max. '$max_chars' Zeichen)?
            echo "<p class=\"result\">&nbsp;&nbsp;&nbsp;<span class='vettetekst'>$message_1</span><br />&nbsp;&nbsp;&nbsp; $message_2</p>";
            $HTTP_GET_VARS['action'] = "ERROR"; 
            }
        }
}

function search_dir($my_server, $my_root, $s_dirs, $s_files, $s_skip, $message_1, $message_2, $no_title, $limit_extracts, $byte_size, $HTTP_GET_VARS) {
    global $count_hits;
    @$keyword=$HTTP_GET_VARS['keyword'];
    @$action=$HTTP_GET_VARS['action'];
    @$limit=$HTTP_GET_VARS['limit'];
    @$case=$HTTP_GET_VARS['case'];
    if($action == "SEARCH") { 
        foreach($s_dirs as $dir) { 
            $handle = @opendir($my_root.$dir);
            while($file = @readdir($handle)) {
                if(in_array($file, $s_skip)) { 
                    continue;
                }elseif($count_hits>=$limit) {
                    break; 
                }elseif(is_dir($my_root.$dir."/".$file)) {//isdir 
                    $s_dirs = array("$dir/$file");
                    search_dir($my_server, $my_root, $s_dirs, $s_files, $s_skip, $message_1, $message_2, $no_title, $limit_extracts, $byte_size, $HTTP_GET_VARS); 
                }elseif(preg_match("/($s_files)$/i", $file)) { //isfile
                    $fd=fopen($my_root.$dir."/".$file,"r");
                    $text=fread($fd, $byte_size); // 50 KB
                    $keyword_html = htmlentities($keyword);
                    if($case) { 
                        $do=strstr($text, $keyword)||strstr($text, $keyword_html);
                    }else{
                        $do=stristr($text, $keyword)||stristr($text, $keyword_html);
                    }
                    if($do) {
                        $count_hits++; 
                        if(preg_match_all("=<title[^>]*>(.*)</title>=siU", $text, $titel)) { 
                            if(!$titel[1][0]) 
                                $link_title=$no_title; 
                            else
                                $link_title=$titel[1][0];  
                        }else{
                            $link_title=$no_title; 
                        }
                        echo "&nbsp;&nbsp;&nbsp;&nbsp;<a href=\"$my_server$dir/$file\" class=\"result\">$count_hits.  $link_title</a><br />"; 
                        $auszug = strip_tags($text);
                        $keyword = preg_quote($keyword); // unescapen
                        $keyword = str_replace("/","\/","$keyword");
                        $keyword_html = preg_quote($keyword_html); // unescapen
                        $keyword_html = str_replace("/","\/","$keyword_html");
                        echo "&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class=\"extract\">";
                        if(preg_match_all("/((\s\S*){0,3})($keyword|$keyword_html)((\s?\S*){0,3})/i", $auszug, $match, PREG_SET_ORDER)); {
                            if(!$limit_extracts)
                                $number=count($match);
                            else
                                $number=$limit_extracts;
                            for ($h=0;$h<$number;$h++) { 
                                if (!empty($match[$h][3]))
                                    printf("<span class='schuinetekst'><span class='vettetekst'>..</span> %s<span class='vettetekst'>%s</span>%s <span class='vettetekst'>..</span></span>", $match[$h][1], $match[$h][3], $match[$h][4]);
                                }
                            }
                        echo "</span><br /><br />";
                        flush();
                        }
                    fclose($fd);
                    }
                }
            @closedir($handle);
            }
        }
}
    
function search_no_hits($HTTP_GET_VARS, $count_hits, $message_4) {
    @$action=$HTTP_GET_VARS['action'];
    if($action == "SEARCH" && $count_hits<1) 
        echo "<p class=\"result\">$message_4</p>";
    }
?>
 
laatste script wekr ook niet.... krijg de melding: oops, niets gevonden


maar moet ik geen servernaam instellen in het script en poortnummer invullen, zo ook de root invullen.


Verder vraag ik me af of ik iets moet doen met de directories: er staat $s_dirs = array(""); met de laatste zoek je op de hele server


wat moet ik waar dan invullen van mijn mappen of bestanden?


Groeten, Marc
 
getenv wil zeggen dat hij een enviroment variable ophaald dus die moet aanwezig zijn
Handiger is $_SERVER["SERVER_NAME"] te gebruiken
 
Zoieso is de hele code een puinhoop, dusja...

2 verbeterpuntjes:
- Je kunt spaties voor het = teken zetten, om zo alle = tekens van de variabelen gelijk te maken. Zo is het wat overzichtelijker
- Bij structuren (zoals if/else) mag je de brackets ({ of }) weglaten, zodat alleen de regel daarna tot de code behoort, maar dit is in de meeste gevallen zeer onduidelijk.

Ikzelf maak soms ook wel rommelige scriptjes, maar met phpformatter.com kun je al een heleboel van die slordigheden weghalen!
 
je schrijft de verbeter punten: is het script verder ook niet goed?

het werkt wel maar alleen maar in php4 jammer dat het niet in 5 werkt
 
Ik heb mij nog eens uitgeleeft op uw script er zouden nu enkele fouten php4=>php5 uit moeten zijn vooral de $PHP_SELF is belangerijk dacht dat deze zou verdwenen moeten zijn bij de php6 zeker maar die rel is nu nog niet uit.

PHP:
<?php
$my_server = "http://".$_SERVER["SERVER_NAME"].":".getenv("SERVER_PORT"); // Jouw server (gewoonlijk hoef je dit niet te veranderen)
$my_root = getenv("DOCUMENT_ROOT"); // Jouw document root (gewoonlijk hoef je dit niet te veranderen)
$s_dirs = array("/php","/javascript","/css","/php-manual"); // In welke directories moet gezocht worden? ("/dir1","/dir2","/dir1/subdir2","/nogeenandere/directory")? --> $s_dirs = array(""); met de laatste zoek je op de hele server
$s_skip = array("..",".","subdir2","programma-code","php-site-zoek-functie.html"); // Welke files of directories moeten er overgeslagen worden?
$s_files = "html|HTML|php|php3|php4|php5|PHP"; // Op welke extensies zoeken? 
$min_chars = "3"; // Minimum aantal letters (cijfers) wat in de zoekbox moet worden ingevuld
$max_chars = "30"; // Maximum aantal letters (cijfers) wat in de zoekbox mag worden ingevuld
$default_val = "zoekwoord"; // Default waarde van zoekveld
$limit_hits = array("10","25","50","100"); // Hoeveel zoekhits moeten er getoond worden, om het selectmenu niet te tonen voer je gewoon een vaste waarde in --> array("100")
$message_1 = "ongeldige zoekterm"; // ongeldige zoekterm
$message_2 = "voer op z`n minst in $min_chars, en maximaal $max_chars tekens."; // geen goede invoer lengte ($min_chars/$max_chars)
$message_3= "zoekresultaten voor "; // zoekresultaat
$message_4 = "oops, niets gevonden."; // noppes
$message_5 = "vinden"; // hoeveel zoekhits wil je hebben
$message_6 = "Match hoofdletters"; // hoofd of kleine letters exact of onbelangrijk
$no_title = "klik voor content"; // als er geen 'title' te vinden is laat je deze tekst zien
$limit_extracts_extracts = ""; // Hoeveel extracts per file wil je laten zien. Default: "" --> elke extract, alternatief: 'integer' b.v. "3"
$byte_size = "51200"; // Hoeveel bytes per pagina mag worden gezocht? Hoe minder, hoe sneller...
function search_form($HTTP_GET_VARS, $limit_hits, $default_val, $message_5, $message_6, $PHP_SELF) {
    @$keyword=$HTTP_GET_VARS['keyword'];
    @$case=$HTTP_GET_VARS['case'];
    @$limit=$HTTP_GET_VARS['limit'];
    ?>
    <form action="<?php print $_SERVER["PHP_SELF"]; ?>" method="get">
        <div>
            <input type="hidden" value="SEARCH" name="action" />
            <input type="text" name="keyword" class="text" size="10"  maxlength="30"   
            <?php 
            if (!$keyword){
                print "value=".$default_val.'"';
                print "onfocus=\" if (value == '$default_val"."') {value=''}\" ";
                print "onblur=\"if (value == '') {value='";
            }else{
                print "value=".str_replace("&amp;","&",htmlentities($keyword)). '"'.$default_val."'}\" /> ";
                print "onfocus=\" if (value == '".str_replace("&amp;","&",htmlentities($keyword))."') {value=''}\"" ;
                print "onblur=\"if (value == '') {value='".str_replace("&amp;","&",htmlentities($keyword))."'}\" /> ";
            }
            $j=count($limit_hits);
            if($j==1)
                echo "<input type=\"hidden\" value=\"".$limit_hits[0]."\" name=\"limit\" />";
            elseif($j>1) {
                echo '<select name="limit" class="select">'."\n";
                for($i=0;$i<$j;$i++) {
                    echo "\n<option value=\"".$limit_hits[$i]."\" >".$limit_hits[$i].$message_5.' </option>';
                }
                echo "</select> ";
            } 
            ?>
                <input type="submit" value="OK" class="button" />
            <span class="checkbox"><br />         <?php print $message_6; ?>           </span>
                
            <input type="checkbox" name="case" value="true" class="checkbox" accept=" <?php print($case)? " CHECKED":"";?>" />
        </div>
     </form>
    <?php
}

function search_headline($HTTP_GET_VARS, $message_3) {
    @$keyword=$HTTP_GET_VARS['keyword'];
    @$action=$HTTP_GET_VARS['action'];
    if($action == "SEARCH") 
    echo "<h2 class=\"result\">$message_3 '<span class='schuinetekst'>".htmlentities(stripslashes($keyword))."</span>'</h2>";
}

function search_error($HTTP_GET_VARS, $min_chars, $max_chars, $message_1, $message_2, $limit_hits) {
    global $HTTP_GET_VARS;
    @$keyword=$HTTP_GET_VARS['keyword'];
    @$action=$HTTP_GET_VARS['action'];
    @$limit=$HTTP_GET_VARS['limit'];
    if($action == "SEARCH") { 
        if(strlen($keyword)<$min_chars||strlen($keyword)>$max_chars||!in_array ($limit, $limit_hits)) { // Ist die Anfrage in Ordnung (min. '$min_chars' Zeichen, max. '$max_chars' Zeichen)?
            echo "<p class=\"result\">&nbsp;&nbsp;&nbsp;<span class='vettetekst'>$message_1</span><br />&nbsp;&nbsp;&nbsp; $message_2</p>";
            $HTTP_GET_VARS['action'] = "ERROR"; 
            }
        }
}

function search_dir($my_server, $my_root, $s_dirs, $s_files, $s_skip, $message_1, $message_2, $no_title, $limit_extracts, $byte_size, $HTTP_GET_VARS) {
    global $count_hits;
    @$keyword=$HTTP_GET_VARS['keyword'];
    @$action=$HTTP_GET_VARS['action'];
    @$limit=$HTTP_GET_VARS['limit'];
    @$case=$HTTP_GET_VARS['case'];
    if($action == "SEARCH") { 
        foreach($s_dirs as $dir) { 
            $handle = @opendir($my_root.$dir);
            while($file = @readdir($handle)) {
                if(in_array($file, $s_skip)) { 
                    continue;
                }elseif($count_hits>=$limit) {
                    break; 
                }elseif(is_dir($my_root.$dir."/".$file)) {//isdir 
                    $s_dirs = array("$dir/$file");
                    search_dir($my_server, $my_root, $s_dirs, $s_files, $s_skip, $message_1, $message_2, $no_title, $limit_extracts, $byte_size, $HTTP_GET_VARS); 
                }elseif(preg_match("/($s_files)$/i", $file)) { //isfile
                    $fd=fopen($my_root.$dir."/".$file,"r");
                    $text=fread($fd, $byte_size); // 50 KB
                    $keyword_html = htmlentities($keyword);
                    if($case) { 
                        $do=strstr($text, $keyword)||strstr($text, $keyword_html);
                    }else{
                        $do=stristr($text, $keyword)||stristr($text, $keyword_html);
                    }
                    if($do) {
                        $count_hits++; 
                        if(preg_match_all("=<title[^>]*>(.*)</title>=siU", $text, $titel)) { 
                            if(!$titel[1][0]) 
                                $link_title=$no_title; 
                            else
                                $link_title=$titel[1][0];  
                        }else{
                            $link_title=$no_title; 
                        }
                        echo "&nbsp;&nbsp;&nbsp;&nbsp;<a href=\"$my_server$dir/$file\" class=\"result\">$count_hits.  $link_title</a><br />"; 
                        $auszug = strip_tags($text);
                        $keyword = preg_quote($keyword); // unescapen
                        $keyword = str_replace("/","\/","$keyword");
                        $keyword_html = preg_quote($keyword_html); // unescapen
                        $keyword_html = str_replace("/","\/","$keyword_html");
                        echo "&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class=\"extract\">";
                        if(preg_match_all("/((\s\S*){0,3})($keyword|$keyword_html)((\s?\S*){0,3})/i", $auszug, $match, PREG_SET_ORDER)); {
                            if(!$limit_extracts)
                                $number=count($match);
                            else
                                $number=$limit_extracts;
                            for ($h=0;$h<$number;$h++) { 
                                if (!empty($match[$h][3]))
                                    printf("<span class='schuinetekst'><span class='vettetekst'>..</span> %s<span class='vettetekst'>%s</span>%s <span class='vettetekst'>..</span></span>", $match[$h][1], $match[$h][3], $match[$h][4]);
                                }
                            }
                        echo "</span><br /><br />";
                        flush();
                        }
                    fclose($fd);
                    }
                }
            @closedir($handle);
            }
        }
}
    
function search_no_hits($HTTP_GET_VARS, $count_hits, $message_4) {
    @$action=$HTTP_GET_VARS['action'];
    if($action == "SEARCH" && $count_hits<1) 
        echo "<p class=\"result\">$message_4</p>";
    }
?>
 
Hallo kenikavanbis,


Dank u voor het herschrijven van het script.


ik had voor het eigen script ook nog het volgende in de html pagina staan om het invoer veld te plaatsen het onderstaande stukje:

PHP:
<?
										search_form($HTTP_GET_VARS, $limit_hits, $default_val, $message_5, $message_6, $PHP_SELF);
									?>

en voor het resultaat:

PHP:
<?php
					search_headline($HTTP_GET_VARS, $message_3);
					search_error($HTTP_GET_VARS, $min_chars, $max_chars, $message_1, $message_2, $limit_hits);
					search_dir($my_server, $my_root, $s_dirs, $s_files, $s_skip, $message_1, $message_2, $no_title, $limit_extracts, $byte_size, $HTTP_GET_VARS);
					search_no_hits($HTTP_GET_VARS, $count_hits, $message_4);
				?>


Kan ik dit ook in het door u herschreven script gebruiken? Alleen het script van u heeft geen invoerveld en geen resultaat of zie ik iets over het hoofd?

Groeten, Marc
 
je schrijft de verbeter punten: is het script verder ook niet goed?

het werkt wel maar alleen maar in php4 jammer dat het niet in 5 werkt

Nouja, ik kan niet zeggen of het een goed script is of niet, aangezien ik het niet kan lezen. Verder kun je nog wel even verder kijken naar de functies die zijn geschrapt sinds versie 4, want meestal zijn er vervangende functies!
 
Nouja, ik kan niet zeggen of het een goed script is of niet, aangezien ik het niet kan lezen. Verder kun je nog wel even verder kijken naar de functies die zijn geschrapt sinds versie 4, want meestal zijn er vervangende functies!

zo ver ben ik niet gegaan natuurlijk maar inderdaad is het beter dat script zoveel mogelijk te verbeteren.

en ik vroeg mij af waar dit nu weer vandaan $HTTP_GET_VARS (is dat nieuw of oud)is toch het zelfde $_GET[]
 
http_get_vars is oud. Je kunt beter $_GET gebruiken.
 
http_get_vars is decrapted sinds php 5 ofzo, dus dat zal wel een reden zijn waarom je script niet werkt op php 5 servers...
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan