aminagu
Messages postés47Date d'inscriptionmercredi 11 avril 2012StatutMembreDernière intervention26 août 2013
-
25 juil. 2011 à 16:39
aminagu
Messages postés47Date d'inscriptionmercredi 11 avril 2012StatutMembreDernière intervention26 août 2013
-
25 juil. 2011 à 18:44
bjr tout le monde
j etais entrain de chercher d un code source pour faire un moteur de recherche et j ai compris le principe mais j arrive pas a comprendre les lignes suivantes :
$mots = explode(' ',$rec);//En separre lexpression en mots cles
foreach($mots as $mot)
{
$req .= ' infos LIKE "%'.$mot.'%" OR';// sutout cette ligne;:(
}
$req .= ' 1=0';// et celle la :(
merci d avance :)
cod57
Messages postés1653Date d'inscriptiondimanche 7 septembre 2008StatutMembreDernière intervention11 septembre 201319 25 juil. 2011 à 17:00
bonjour
quand tu saisies des mots dans le champs de recherche généralement il sont séparés par un espace donc tu éclates la chaîne envoyé par les espaces
ex tu as tapé : musique classique guitare
ta chaîne va être stocké dans un tableau $mots
la fonction explode se charge du travail
puis chaque éléments du tableau serait concaténer dans une chaîne $req
les espaces seront alors des 'or' qui pourront permettre la recherche dans la base
' infos LIKE "%musique%" OR infos LIKE "%classique%" OR infos LIKE "%guitare%"
kohntark
Messages postés3705Date d'inscriptionlundi 5 juillet 2004StatutMembreDernière intervention27 avril 201230 25 juil. 2011 à 18:39
Salut,
Le mieux pour bien comprendre et de faire un echo de la string (la requête) générée
foreach($mots as $mot) {
$req .= ' infos LIKE "%'.$mot.'%" OR';// sutout cette ligne;:(
}
A ce point du script tu te retrouves avec une chaîne du genre:
$req = '[patati patata WHERE] infos LIKE "%machin%" OR "bidule" OR
Tu vois bien que cette requête n'est pas valide (le dernier OR suivi de rien)
On pourrait très bien supprimer ce dernier OR de différentes manières, mais l'auteur du script à décider de rendre la requête valide en ajoutant ça :
$req .= ' 1=0';
$req ressemble donc à :
$req = '[patati patata WHERE] infos LIKE "%machin%" OR "bidule" OR 1=0
Ce qui est valide; 1=0 ne serait simplement jamais vrai.
C'est selon moi une méthode à éviter, ... mais pourquoi pas
Cordialement,
Kohntark -
Vous n’avez pas trouvé la réponse que vous recherchez ?