Moteur de recherche, traitement données envoyées par l'utilisateur

Eléphant du PHP | 447 Messages

30 janv. 2009, 18:03

Oléééééé (c'est "hello" en verlan),

je souhaite créer un moteur de recherche, à cet effet j'ai fait un formulaire avec un champ text + un submit... alors je vous demande pas de faire la code à ma place mais de me donner des pistes et des idées!
Je bloque sur sur cette partie: qu'est-ce que je fais du contenu de ma variable post avant d'excéuter une requête?

Voici où j'en suis:
<?php
				   if (empty($_POST['seekit'])) {
				   echo '<h4>Erreur</h4>
				   <br /><p>Tu n\'a entré aucun critère de recherche...</p>';
				   }
				   else {
				   $getf = $_POST['seekit'];
				   $getf = mysql_real_escape_string(htmlspecialchars($getf));
				   
                                   // Quel traitement de $getf ?
                                   
                                   // Ensuite... ?
				   $st = 'SELECT userid FROM tags WHERE tag LIKE "%'.$/* ? */.'%"'; /* Le champ tag contient à chaque fois 
une chaîne de caractère (chaque mot séparé par une virgule) */
				   $st2 = mysql_query($st);
				   while ($st3 = mysql_fetch_array($st2))
				   { //Affichage du résultat
Bon beh voilà... A vos claviers, faites brûler les touches! :ordi:

En attendant vos bons conseils je crois que je vais m'inspirer de ça:

http://www.siteduzero.com/tutoriel-3-32 ... -cles.html
Probably (only a) Human Problem?

Eléphant du PHP | 288 Messages

30 janv. 2009, 18:55

Salut,


Moi j'aurais fais:
 
$getf = mysql_real_escape_string($_POST['seekit']); 

Avant ma requete sur ma bd, de cette manière je me protège contre les injections sql et à l'affichage
apres mon select afficher avec :
htmlspecialchars
protege contre les attacques de type xss.

Pour pousser plus encore, tu pourrais verifier si les magic quotes sont activés et faire les traitemensts en consequence.

J'espere que ca aide

Eléphant du PHP | 447 Messages

30 janv. 2009, 19:03

Hello damaskinos (marrant comme pseudo :D ), merci pour ta réponse!

Tu dis:
Salut,


Moi j'aurais fais:
 
$getf = mysql_real_escape_string($_POST['seekit']); 

Avant ma requete sur ma bd...

C'est ce que je fais, non?
Voici où j'en suis:
<?php
				   if (empty($_POST['seekit'])) {
				   echo '<h4>Erreur</h4>
				   <br /><p>Tu n\'a entré aucun critère de recherche...</p>';
				   }
				   else {
				   $getf = $_POST['seekit'];
				   $getf = mysql_real_escape_string(htmlspecialchars($getf));
				   // Requête
                                  
Je le mets bien avant la requête là...

Par contre ma question concerne surtout ce que je peux faire avec ma variable $getf qui peut contenir plusieurs mots... si je traite pas ces mots je n'aurais aucun résultat vu que le champ dans lequel je cherche contient des mots séparé par une virgule; ça voudrait dire que l'utilisateur doit entrer la combinaison exact de mot pour correspondre à une chaîne dans le champ tag...
et je ne sais pas comment faire!

faut certainement que je sépare chaque mot contenu dans $getf que je les places dans un tableau et que je formule ma requête pour effectuer la recherche en conséquence!

C'est bon, je suis sur la bonne voie?
Probably (only a) Human Problem?

Eléphant du PHP | 288 Messages

30 janv. 2009, 19:51

En fait regarde bien ce que j'ai ecris,
$getf = mysql_real_escape_string($_POST['seekit']);
est sans le
htmlspecialchars
qui elle est utilisé plus pour l'affichage.

Pour ton problème, tu peux utiliser explode et faire comme tu dis. Il y a des fonction mysql comme

Code : Tout sélectionner

LIKE
, il y en a même des spécifique pour la recherche que tu peux utiliser pour ca.

Lit un peu ca je crois que ca peut t'intéresser. http://dev.mysql.com/doc/refman/5.0/fr/ ... ching.html Et http://dev.mysql.com/doc/refman/5.0/fr/ ... earch.html. Y en a d'autre selon tes besoins.

Bonne continuation

Eléphant du PHP | 447 Messages

30 janv. 2009, 20:16

ok merci beaucoup!! je vais regarder ça.

je mettrais résolu plus tard.
Probably (only a) Human Problem?