Script recherche fichiers

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Script recherche fichiers

Re: Script recherche fichiers

par @rthur » 25 févr. 2017, 00:15

Avec break;, il arrête le script immédiatement ? Le code $d->close(); qui ferme le répertoire ne sera pas lu ?
Moogli t'a gentiment mis un lien vers la doc sur cette fonction.
A la lecture de la doc PHP, quelle est ta conclusion ?

Re: Script recherche fichiers

par megamanx » 24 févr. 2017, 21:58

Code : Tout sélectionner

<?php $compteur = 0; $d = dir("./"); //Recherche nom de fichier dans ce dossier if(isset($_POST['submit']) AND !empty($_POST['mot'])) { $mot = trim($_POST['mot']); $str = $mot; $str = strtolower($str); $mot = $str; $accent = array(' ' => '-', 'é' => 'e', 'è' => 'e', 'ê' => 'e', 'É' => 'e', 'à' => 'a', 'â' => 'a', 'ï' => 'i'); $mot = strtr($mot, $accent); while($entry = $d->read()) { preg_match("#($mot+?)#s", $entry, $new); $data = trim($new[1]); if (!empty($data)) {$compteur++; echo '<b>R&eacute;sultat : <a href="'.$entry.'">'.$data.'</a></b><br><br>';} if ($compteur > 9) {break;} } $d->close(); } ?> <form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post"> <input type="text" name="mot"> <input type="submit" name="submit" value="Recherche"> </form> </div><br><br><br>
C'est bon, ça marche.
Je dois aussi mettre $compteur++; dans la condition if (!empty($data)), sinon il incrémente aussi quand il parcourt les fichiers qui ne correspondent pas.

Avec break;, il arrête le script immédiatement ? Le code $d->close(); qui ferme le répertoire ne sera pas lu ?

Re: Script recherche fichiers

par moogli » 24 févr. 2017, 08:57

tu n'as pas de condition pour $compteur > 10 avec l'utilisation de l'instruction break


@+

Re: Script recherche fichiers

par megamanx » 23 févr. 2017, 21:48

Je n'arrive pas. Le script ne marche plus du tout :

Code : Tout sélectionner

<?php $compteur = 0; $d = dir("./"); //Recherche nom de fichier dans ce dossier if(isset($_POST['submit']) AND !empty($_POST['mot'])){ $mot = trim($_POST['mot']); $str = $mot; $str = strtolower($str); $mot = $str; $accent = array(' ' => '-', 'é' => 'e', 'è' => 'e', 'ê' => 'e', 'à' => 'a', 'â' => 'a', 'ï' => 'i'); $mot = strtr($mot, $accent); while($entry = $d->read()) { preg_match("#($mot+?)#s", $entry, $new); $data = trim($new[1]); if ((!empty($data)) and ($compteur <= 10)) echo 'R&eacute;sultat : <b><a href="'.$entry.'">'.$data.'</a></b><br><br>'; $compteur++; } $d->close(); } ?> <form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post"> <input type="text" name="mot"> <input type="submit" name="submit" value="Recherche"> </form>

Re: Script recherche fichiers

par @rthur » 23 févr. 2017, 20:42

Bonjour,
J'ai un autre soucis avec ce script. Il continue la recherche tant qu'il reste encore de fichiers dans le repertoire. Est-il possible de stopper la recherche après 10 résultats ?
Oui c'est possible assez simplement.
Initialise une variable (par exemple $i) à 0 avant ta boucle while.
Dans ta boucle vérifie la valeur de $i si elle est supérieure à 10 tu sors de ta boucle avec break, sinon tu incrémentes $i de 1

Re: Script recherche fichiers

par megamanx » 23 févr. 2017, 19:51

C'est bon, j'ai résolu le problème en mettant :

Code : Tout sélectionner

<?php ini_set('default_charset', 'iso8859-1'); ?>
en tout début de page et non en milieu de page.

J'ai un autre soucis avec ce script. Il continue la recherche tant qu'il reste encore de fichiers dans le repertoire. Est-il possible de stopper la recherche après 10 résultats ?

Re: Script recherche fichiers

par megamanx » 23 févr. 2017, 15:32

Mes fichiers n'ont pas d'accent. Ce sont les utilisateurs qui tapent parfois les accents dans la barre de recherche.
Ils ne trouveront donc pas mes fichiers dans ce cas là.

Re: Script recherche fichiers

par moogli » 23 févr. 2017, 15:28

salut,

il faut voir quel est le charset du système et tenter de convertir la chaîne fournit dans le formulaire vers cet encodage.

sinon c'est une mauvaise idée d'utilisé des caractères "spéciaux" (en claire qui ne sont pas dans l'alphabet anglophone plus les chiffres et quelques caractères comme _-) s'il est possible il est préférable de les remplacer à la création du fichier.

@+

Script recherche fichiers

par megamanx » 23 févr. 2017, 15:18

Bonjour,
J'ai trouvé un script de recherche php sans base de données assez simple. Mais malheureusement, il ne trouve plus les fichiers quand on met un accent. J'ai essayé de remplacer les accents avec array, mais ça ne marche pas :

Code : Tout sélectionner

<?php ini_set('default_charset', 'iso8859-1'); $d = dir("./"); //Recherche nom de fichier dans ce dossier if(isset($_POST['submit']) AND !empty($_POST['mot'])){ $mot = trim($_POST['mot']); $str = $mot; $str = strtolower($str); $mot = $str; // Tout en minuscule $accent = array('é' => 'e', 'è' => 'e', 'ê' => 'e', 'à' => 'a', 'â' => 'a', 'ï' => 'i'); $mot = strtr($mot, $accent); // Remplacer les lettres avec accent while($entry = $d->read()) { preg_match("#($mot+?)#s", $entry, $new); $data = trim($new[1]); if (!empty($data)) echo 'R&eacute;sultat : <a href="'.$entry.'">'.$data.'</a><br><br>'; } $d->close(); } ?> <form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post"> <input type="text" name="mot"> <input type="submit" name="submit" value="Recherche"> </form>