mot clé

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 : mot clé

par Ryle » 22 mars 2009, 22:09

Bingo :wink:

Modération :
Puisque ta question est résolue, j'ajoute le tag [Résolu]
pour indiquer aux personnes qui voudront consulter ce sujet qu'il contient une solution.

Tu peux réaliser cette opération toi-même
en cliquant sur le bouton Image qui s'affiche en haut à gauche de ce sujet
si tu as posté le 1er message en tant que membre (inscrit et identifié).

Alors... inscris-toi !!! ;)

par Invité » 22 mars 2009, 21:09

Merci pour ta réponse Ryle en faite c'est pas des empty mais des isset qu'il faut mettre

par Ryle » 22 mars 2009, 20:57

Ton champ ad_price est bien de type numérique dans ta base de données ?

Si les valeurs de $_GET['Prixmini'] et $_GET['Prixmaxi'] sont des nombres, elles ne devraient pas être entre apostrophes dans ta requête.

Ah non tiens... c'est pas ça... je viens de trouver.... regarde la documentation de la fonction empty() que tu utilises dans ton if() et la façon dont elle traite les valeurs égales à 0... ;)

par Invité » 21 mars 2009, 15:33

Merci de me rassurer :)
J'ai lu ça concernant le script que j'adapte
Question: il y a mysql_real_escape_string dans le script
Réponse: non le mysql_query() envoie une question unique (des questions multiples ne sont pas soutenues)
C'est peut être suffisant :roll:

En faite j'ai la réponse qui m'a été donné et ça fonctionne !

Code : Tout sélectionner

if (!empty($_GET['Motcle'])) { $search .= " AND a.ad_text LIKE '%".$_GET['Motcle']."%'"; }
Par contre j'ai toujours le soucis sur

Code : Tout sélectionner

if (!empty($_GET['Prixmini']) && !empty($_GET['Prixmaxi'])) { $search .= " AND (a.ad_price BETWEEN '" . $_GET['Prixmini']. "' AND '" . $_GET['Prixmaxi'] . "')"; }
Si je rentre dans Mini le chiffre 0 et dans Maxi 1000 il me liste tout même les supérieur à 1000
le problème est sur le zéro sinon ça fonctionne parfaitement

par Ryle » 21 mars 2009, 14:07

Alors tout d'abord on va se calmer avec la paranoïa : les chinois du FBI ne te surveillent pas et n'essayent pas désespérement de pirater ton site pour saboter ta base de données.... :x

Ton code ne semble en effet pas sécurisé (bien qu'on ait pas la moindre idée des traitements qui ont pu être effectués au préalable). Il est donc probable qu'il te faille revoir le traitement des données que tu récupères, mais c'est à peu près tout ce que tu aurais besoin de faire...

Maintenant pour en revenir au sujet, il te faudrait afficher la requête avant de l'exécuter, ou simplement la valeur de $search et dans un premier temps t'assurer que la syntaxe est correcte et que le mot clé apparait bien.

En l'occurence, il semble simplement te manquer l'opérateur entre le nom du champ et la valeur que tu veux tester :
$search .= " AND (a.ad_text __ '". $_GET['Motcle']. "')";
Tu dois donc avoir une erreur MySQL, qu'il aurait suffit de tester dans phpMyAdmin ou de faire apparaitre le message d'erreur lors de l'exécution (mysql_error()), pour qu'il t'indique une erreur de syntaxe à cet endroit ;)

par Invité » 21 mars 2009, 11:13

Comment ce fait il que je n'ai pas de réponses sur ce sujet? Je fais fausse route c'est un code bidon ?

par Invité » 19 mars 2009, 18:29

Merci pour vos réponses et l'éclairage il y a tellement de truc à savoir :shock:
Juste un truc avant je précise que j'adapte un script fait par Adsmanager sur une base joomla.

Pour la sécurité en faisant des recherches j'ai lu sur un forum:
mysql_real_escape_string est non présent dans AdsManager ou JDirectory
ils utilisent mysql_query

le mysql_query() envoie une question unique (des questions multiples ne sont pas soutenues)

C'est suffisant comme protection ?
Parce que ça me fais un peu flipper
:?

par Poulpe » 19 mars 2009, 12:22

Mais les codes qui pour moi fonctionnent

Code : Tout sélectionner

if ($text_search <> "") { $search .= " AND (a.ad_headline LIKE '%$text_search%' OR a.ad_text LIKE '%$text_search%') "; }
et

Code : Tout sélectionner

if (!empty($_GET['Prixmini']) && !empty($_GET['Prixmaxi'])) { $search .= " AND (a.ad_price BETWEEN '" . $_GET['Prixmini']. "' AND '" . $_GET['Prixmaxi'] . "')"; }
C'est DANGER ? il faut que je trouve autre chose pour les sécuriser ?
Par exemple, si ton $_GET['Prixmini'] et $_GET['Prixmaxi'] doivent être des integer, alors tu peux déjà tester si s'en ait vraiment.

Code : Tout sélectionner

$Prixmini = (is_int($_GET['Prixmini'])) ? $_GET['Prixmini'] : 0; $Prixmini = (is_int($_GET['Prixmaxi'])) ? $_GET['Prixmaxi'] : 0; if (!empty($Prixmini) && !empty($Prixmini)) { $search .= " AND (a.ad_price BETWEEN '" . $Prixmini . "' AND '" . $Prixmini . "')"; }
Si ils doivent être de type string, penses à ajouter des addslashes() pour éviter de faire planter ta requête.

par Invité » 19 mars 2009, 11:38

Mais les codes qui pour moi fonctionnent

Code : Tout sélectionner

if ($text_search <> "") { $search .= " AND (a.ad_headline LIKE '%$text_search%' OR a.ad_text LIKE '%$text_search%') "; }
et

Code : Tout sélectionner

if (!empty($_GET['Prixmini']) && !empty($_GET['Prixmaxi'])) { $search .= " AND (a.ad_price BETWEEN '" . $_GET['Prixmini']. "' AND '" . $_GET['Prixmaxi'] . "')"; }
C'est DANGER ? il faut que je trouve autre chose pour les sécuriser ?

par Poulpe » 19 mars 2009, 11:21

Il voulait dire que passer directement tes $_POST ou $_GET dans tes requêtes sans tester leur contenu au préalable est un réel danger.

par Invité » 19 mars 2009, 11:14

houlla tu me fait peur tu veux dire que même le code que j'ai montré plus haut et qui fonctionne est une porte ouverte ? mais alors comment peut t'on faire une recherche sans ce faire pirater ?

par Invité » 19 mars 2009, 11:14

houlla tu me fait peur tu veux dire que même le code que j'ai montrer plus qui fonctionne est une porte ouverte ? mais alors comment peut t'on faire une recherche sans ce faire pirater ?

par Berzemus » 19 mars 2009, 10:46

Tu sais que si jamais un mal intentionné tombe sur ton site, tu vas te faire pirater dans tout les sens ? Ta DB s'en souviendra, s'il en restera quelque chose.

Mettre du contenu dans une requête SQL directement depuis les variables $_POST ou $_GET, c'est un peu comme partir de chez soi mais en laissant tout grand ouvert, avec une pancarte écrit dessus "ENTREZ, JE SUIS PARTI"

par Invité » 19 mars 2009, 10:16

Le like que je le mette ou pas c'est pareil :(

par jojolapine » 19 mars 2009, 09:28

Et le LIKE, il ets ou le LIKE?