
hantise_2004
|
Fichier resultats.php
<?php
$largeurTableau="95%"; // Largeur du Tableau
$NombreRepPages=10; // Nombre n d'intitulés de pages Web à afficher par pages de résultat
$NombreRepMax=200; // Nombre maximum de résultats à traiter par le moteur
$policeResultats="verdana"; // Police de caractères utilisée pour l'affichage des résultats
$couleurPoliceResultats="#000000"; // Couleur de la police de caractères utilisée pour l'affichage des résultats
?>
<html>
<head>
<title>Moteur de recherche - Résultats de la recherche</title>
</head>
<body bgcolor="#95B5CC">
<?php
$fichierIndex="indexsite.dat";
$motsVides=" and or et ou le la les un une du de des a à au aux son sa ses ne ni non sauf ce ces cet je tu il elle on nous vous ils elles etc mon ma ton ta vos se y en ";
if(!file_exists("indexsite.dat")) {
print("Le site Web n'a pas encore été indexé : veuillez exécuter le <b>script d'indexation</b> avant d'effectuer votre première recherche.\n");
exit;
}
if(!$requete) {
print("<center>\n");
print("<font face=\"$policeResultats\" size=\"-1\" color=\"$couleurPoliceResultats\">\n");
print("Vous avez activé la recherche sans avoir préalablement saisi votre requête.<br>");
print("<a href=\"moteured.php\">Cliquez ici</a> pour effectuer une nouvelle recherche.<br>\n");
print("</font>\n");
print("</center>\n");
}
else {
$requete=trim(stripslashes($requete));
$requete1=$requete;
$expressions[]="Liste des expressions";
while($testExpress=ereg("[\"]([^\"]+)[\"]",$requete1,$corresExpress)) {
$exp=$corresExpress[1];
$expressions[]=$exp;
$requete1=ereg_replace($corresExpress[0],"",$requete1);
}
$nombreExpressions=count($expressions)-1;
function netGuil($term) {
if(ereg("^[\"]*([^\"]+)[\"]*$",$term,$corres)) {
$reps=$corres[1];
return $reps;
}
else {
return($term);
}
}
$requete2=$requete;
$motsCles[]="Liste des mots-clés";
$mot=trim(stripslashes(strtok($requete2," ")));
if(!(ereg("[ ]".$mot."[ ]",$motsVides))) {
$motsCles[]=netGuil($mot);
}
while($mot=trim(stripslashes(strtok(" ")))) {
if($mot and (!(ereg("[ ]".$mot."[ ]",$motsVides)))) {
$motsCles[]=netGuil($mot);
}
}
$nombreMotsCles=count($motsCles)-1;
$contenuIndex=file($fichierIndex);
$nlignesIndex=count($contenuIndex);
$nombreDocumentsIndexes=($nlignesIndex-1)/4;
for($compt=1;$compt<=$nombreDocumentsIndexes;$compt++) {
$cheminDocument[$compt]=trim(stripslashes($contenuIndex[(4*($compt-1))+1]));
$titreDocument[$compt]=trim(stripslashes($contenuIndex[(4*($compt-1))+2]));
$descriptionDocument[$compt]=trim(stripslashes($contenuIndex[(4*($compt-1))+3]));
$texteDocument[$compt]=trim(stripslashes($contenuIndex[(4*($compt-1))+4]));
}
for($compt=1;$compt<=$nombreDocumentsIndexes;$compt++) {
$score[$compt]=0;
if(eregi("(^|[ .,:;!?'()])".$requete."([ .,:;!?'()]|$)",$texteDocument[$compt])) $score[$compt]=$score[$compt]+1;
for($a=1;$a<=$nombreExpressions;$a++) {
if(eregi("(^|[ .,:;!?'()])".$expressions[$a]."([ .,:;!?'()]|$)",$titreDocument[$compt])) $score[$compt]=$score[$compt]+2;
if(eregi("(^|[ .,:;!?'()])".$expressions[$a]."([ .,:;!?'()]|$)",$texteDocument[$compt])) $score[$compt]=$score[$compt]+1;
}
for($b=1;$b<=$nombreMotsCles;$b++) {
if(eregi("([^*]*) ",$motsCles[$b],$corMotCle)) {
if(eregi("(^|[ .,:;!?'()])".$corMotCle[1],$titreDocument[$compt])) $score[$compt]=$score[$compt]+2;
if(eregi("(^|[ .,:;!?'()])".$corMotCle[1],$texteDocument[$compt])) $score[$compt]=$score[$compt]+1;
}
else {
if(eregi("(^|[ .,:;!?'()])".$motsCles[$b]."([ .,:;!?'()]|$)",$titreDocument[$compt])) $score[$compt]=$score[$compt]+2;
if(eregi("(^|[ .,:;!?'()])".$motsCles[$b]."([ .,:;!?'()]|$)",$texteDocument[$compt])) $score[$compt]=$score[$compt]+1;
}
}
}
$HiScore=max($score);
arsort($score);
$documentsCorrespondantsOrd[]=0;
for(reset($score);$cle=key($score);next($score)) {
if(current($score)>0) {
$documentsCorrespondantsOrd[]=$cle;
}
}
$nombreCorrespondances=count($documentsCorrespondantsOrd)-1;
print("<table width=\"$largeurTableau\" border=\"0\" align=\"center\"> \n");
print("<tr><td> \n");
if($nombreCorrespondances<1) {
print("<center> \n");
print("<font face=\"$policeResultats\" color=\"$couleurPoliceResultats\" size=\"-1\"> \n");
print("Désolé, aucune page ne correspond à la recherche : '<b>$requete</b>'. <br><br> \n");
print("</font> \n");
print("</center> \n");
}
else {
if(@ !$p) $p=1;
if($nombreCorrespondances==1) {
print("<font face=\"$policeResultats\" color=\"$couleurPoliceResultats\" size=\"-1\"> \n");
print("La requête '<b>$requete</b>' a donné <b>1</b> résultat. <br>\n");
print("</font> \n");
}
else {
if($nombreCorrespondances>=$NombreRepMax) {
print("<font face=\"$policeResultats\" color=\"$couleurPoliceResultats\" size=\"-1\"> \n");
print("La requête '<b>$requete</b>' a donné plus de $NombreRepMax résultats. <br>\n");
print("</font> \n");
$nombreCorrespondances=$NombreRepMax;
}
else {
print("<font face=\"$policeResultats\" color=\"$couleurPoliceResultats\" size=\"-1\"> \n");
print("La requête '<b>$requete</b>' a donné <b>$nombreCorrespondances</b> résultats. <br>\n");
print("</font> \n");
}
}
print("<font face=\"$policeResultats\" color=\"$couleurPoliceResultats\" size=\"-1\"> \n");
print("Liste des pages <b>".$p."</b> à <b>".(min(($p+$NombreRepPages-1),$nombreCorrespondances))."</b> :<br><br>");
print("</font> \n");
for($compt=$p;$compt<=min(($p+$NombreRepPages-1),$nombreCorrespondances);$compt++) {
print("<font face=\"$policeResultats\" color=\"$couleurPoliceResultats\" size=\"-1\"> \n");
print("<b>$compt</b>. <a href=\"".$cheminDocument[$documentsCorrespondantsOrd[$compt]]."\"><b>".$titreDocument[$documentsCorrespondantsOrd[$compt]]."</b></a><br> \n");
print($descriptionDocument[$documentsCorrespondantsOrd[$compt]]."<br><br> \n");
print("</font> \n");
}
print("<center> \n");
if(($p-$NombreRepPages)>0) {
print("<font face=\"$policeResultats\" color=\"$couleurPoliceResultats\" size=\"-1\"> \n");
print("<a href=\"resultats.php?requete=".rawurlencode($requete)."&p=".($p-$NombreRepPages)."\"><< page précédente</a> \n");
print("</font> \n");
}
if($nombreCorrespondances>$NombreRepPages) {
print("<font face=\"$policeResultats\" color=\"$couleurPoliceResultats\" size=\"-1\"> \n");
for($a=1;$a<=(floor(($nombreCorrespondances-1)/$NombreRepPages)+1);$a++) {
if((floor($p/$NombreRepPages)+1)==$a) {
print("$a \n");
}
else {
@ print("<a href=\"resultats.php?requete=".rawurlencode($requete)."&p=".(($a-1)*$NombreRepPages+1)."\">$a</a> \n");
}
}
print("</font> \n");
}
if(($p+$NombreRepPages)<=$nombreCorrespondances) {
print("<font face=\"$policeResultats\" color=\"$couleurPoliceResultats\" size=\"-1\"> \n");
@ print(" <a href=\"resultats.php?requete=".rawurlencode($requete)."&p=".($p+$NombreRepPages)."\">page suivante >></a> \n");
print("</font> \n");
}
print("</center> \n");
}
// **************************************************************************
// Affichage du formulaire permettant d'effectuer une nouvelle recherche
// **************************************************************************
print("<form action=\"resultats.php\" method=\"post\"> \n");
print("<table align=\"center\"> \n");
print("<tr><td align=\"center\"> \n");
print("<font face=\"$policeResultats\" color=\"$couleurPoliceResultats\" size=\"-1\"> \n");
print("Effectuer une nouvelle recherche: <br> \n");
print("</font> \n");
print("</td></tr> \n");
print("<tr><td align=\"center\"> \n");
print("<input type=\"text\" name=\"requete\" size=\"20\"> \n");
print(" ");
print("<input type=\"submit\" value=\"Chercher\"> \n");
print("</td></tr> \n");
print("</table> \n");
print("</form> \n");
print("<center><font face=\"$policeResultats\" size=\"-2\" color=\"$couleurPoliceResultats\">\n");
print("</td></tr> \n");
print("</table> \n");
$idFiqReq=fopen("req.txt","a+");
fputs($idFiqReq,$requete."\n");
fclose($idFiqReq);
}
?>
fichier pour indexer mon site indexat.php
<?php
// ##################################################################################
// Paramètres de configuration du module d'indexation : nom du répertoire principal à parcourir (rappelons que ses sous-répertoires sont parcourus de façon automatique)
// === Localisation du répertoire principal à indexer === Note : le nom du répertoire ne doit pas être refermé par un slash
// Entrez la valeur "." pour le répertoire courant, ".." pour le répertoire parent
$cheminRepertoire="..";
// === Renseignement sur les types de fichiers à indexer === Note : Entrez ici les différents formats de fichiers à indexer, séparés par une virgule
// Rappel : les seuls formats acceptés pour l'instant sont htm, html et txt
$listeFormatsFichiers="htm,html";
?>
<html>
<head>
<title>Moteur de recherche - Module d'indexation</title>
</head>
<body>
<?php
if(!is_dir($cheminRepertoire)) {
print("Erreur ! <b>".basename($cheminRepertoire)."</b> n'est pas un répertoire.");
exit;
}
$formatsInterdits=" php php3 php4 ";
$formatCourant=strtok($listeFormatsFichiers,",");
do {
if(eregi(" ".$formatCourant." ",$formatsInterdits)) {
print("Rappel : les fichiers de format <b>$formatCourant</b> ne peuvent pas être indexés.<br> \n");
$formatCourant=strtok(",");
continue;
}
else {
$formatFichiers[]=".".$formatCourant;
$formatCourant=strtok(",");
continue;
}
} while($formatCourant);
function listeRecursiveFichiers($cheminRep,$extension) {
global $tableauCorrespondances;
static $formatsTraites;
$idRep=opendir($cheminRep);
while($objet=readdir($idRep)) {
$formatObjet=strstr($objet,".");
$cheminObjet=$cheminRep."/".$objet;
if($objet=="." or $objet=="..") {
continue;
}
if($formatObjet==$extension) {
$tableauCorrespondances[]=$cheminObjet;
}
if(is_dir($cheminObjet)) {
listeRecursiveFichiers($cheminObjet,$extension);
}
}
closedir($idRep);
}
$nombreFormats=count($formatFichiers); // nombre de formats de fichiers à indexer
for($compt=0;$compt<$nombreFormats;$compt++) {
listeRecursiveFichiers($cheminRepertoire,$formatFichiers[$compt]);
}
$listeXFichiers=$tableauCorrespondances;
print("<br>La liste des fichiers à indexer est la suivante :<br><br> \n");
$nombreFichiersAIndexer=count($listeXFichiers);
for ($compt=0;$compt<$nombreFichiersAIndexer;$compt++) {
print($compt." / ".$listeXFichiers[$compt]."<br> \n");
}
print("<br> \n");
// ****************************************************************************
// Création du fichier indexsite.dat et enregistrement de différentes valeurs :
// ****************************************************************************
$idFicIndex=fopen("indexsite.dat","w+");
// Ecriture d'un message d'avertissement sur la première ligne
fputs($idFicIndex,"Fichier Index. Ne pas éditer ! \n");
for($compt=0;$compt<count($listeXFichiers);$compt++) {
$cheminFichierCandid=$listeXFichiers[$compt];
if(!is_readable($cheminFichierCandid)) {
continue;
}
$idFicCandid=fopen($cheminFichierCandid,"r");
$titre="";
$description="";
$ligne="";
$texte="";
while(!feof($idFicCandid)) {
$ligne=fgets($idFicCandid,10000);
$ligne=str_replace(" "," ",$ligne);
$ligne=str_replace("&NBSP;"," ",$ligne);
$ligne=trim($ligne);
if (ereg("^[^<>]+$",$ligne)
or ereg(">[^<>]+<",$ligne)
or ereg(">[^<>]+$",$ligne)
or ereg("^[^<>]+<",$ligne)
) {
$ligne=$ligne." ";
}
$texte=$texte.$ligne;
}
fclose($idFicCandid);
$texte=stripslashes($texte);
if($testTitre=eregi("<title>(.*)</title>",$texte,$corresTitre)) {
$titre=$corresTitre[1];
}
else {
$titre="Document sans titre";
}
$testMeta=eregi("name=\"description\"[ ]*content=\"([^\"]*)\"",$texte,$corresDescript);
if($testMeta) {
$description=$corresDescript[1];
$description=substr($description,0,150);
}
$texte=eregi_replace("<script.+/script>","",$texte);
$texte=strip_tags($texte);
$texte=substr($texte,0,8000);
if(!$testMeta) {
$description=substr($texte,0,150);
}
if(strlen($description)>140) {
if($testFin1=ereg("(.*)[ ][^ ]*$",$description,$corresFin1)) {
$description=$corresFin1[1];
if($testFin2=ereg("(.*)[,;:.]$",$description,$corresFin2)) {
$description=$corresFin2[1];
}
$description=$description."...";
}
else {
$description=$description."...";
}
}
fputs($idFicIndex,$cheminFichierCandid."\n"); // écriture du chemin du fichier (ligne N)
fputs($idFicIndex,$titre."\n"); // écriture du titre (ligne N+1)
fputs($idFicIndex,$description."\n"); // écriture de la description (ligne N+2)
fputs($idFicIndex,$texte."\n"); // écriture du texte à indexer (ligne N+3)
print("$compt / Le fichier $cheminFichierCandid a bien été indexé <br> \n");
}
fclose($idFicIndex);
//**********************************************************************************
// Vérification du résultat de l'indexation
//**********************************************************************************
$tabFicIndVerif=file("indexsite.dat");
$nlignesEffectivementIndexees=(count($tabFicIndVerif)-1)/4;
print("<br>\n");
if($nlignesEffectivementIndexees==$nombreFichiersAIndexer) {
print("L'indexation des fichiers contenus dans le répertoire \"<b>$cheminRepertoire</b>\" a atteint son terme et s'est déroulée correctement. \n");
print("Pour effectuer une première recherche, <a href=\"moteured.php\">cliquez ici</a>.\n");
}
else {
print("L'indexation des fichiers contenus dans le répertoire \"<b>$cheminRepertoire</b>\" n'a pas atteint son terme.<br>Ce problème est peut-être dû au nombre relativement important de fichiers à indexer. Afin de tous les englober dans le fichier indexsite.dat, vous devez recommencer l'opération d'indexation en ayant préalablement augmenté (si vous en avez la possibilité) la durée maximum d'exécution des scripts PHP, dans le fichier php.ini.");
}
?>
|