Le zéro pas reconnu

Bonjour, je vous cache pas que je ne suis pas un expert en php je suis coincé sur un truc.
Alors je vous demande votre aide voila mon code
# 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érieurs à 1000

Le problème est sur le zéro sinon ça fonctionne parfaitement !
Configuration: Windows XP
Firefox 3.0.7

10 réponses

  1. oui pareil
    1. Je sais pas...
      essai peut-être un settype($_GET['Prixmini'], "integer");
      et settype($_GET['Prixmaxi'], "integer")...
      si ce sont des caractères dans tes variables $_GET...
      et vire les '' autour de leurs valeurs dans ta requête... bien que je ne sois pas sur de ce dernier conseil...
  2. C'est un soucis avec !empty
    1. T'as raison, bien vu, isset est plus approprié...
  3. Non avec isset ça fonctionne pas il doit manquer un truc avec empty
    1. du tout...
      je site :
      " Retourne FALSE si var a une valeur non-vide et différente de zéro.

      Ce qui suit est considéré comme étant vide :

      * "" (une chaîne vide)
      * 0 (0 en tant qu'entier)
      * "0" (0 en tant que chaîne de caractères)
      * NULL
      * FALSE
      * array() (un tableau vide)
      * var $var; (une variable déclarée, mais sans valeur dans une classe)"
      ...
      si tu pense que ton problème viens de là, c'est une bonne piste il me semble..
    2. @sebshivaet vérifie bien ce que te renvois $_GET['Prixmaxi'] en terme de type de variable (même si PHP n'est pas un langage typé à proprement parlé...)
  4. Salut,

    De toute facon, ton problème est bien plus que secondaire vu que tu as 2 grosses failles de sécurité en 1 requete !
    1. Salut paf,
      moi aussi je serais curieux de savoir où tu vois des failles de sécurité dans ces trois lignes...
  5. 2 grosses failles de sécurité ?
    Tu peux m'en dire plus c'est quoi les failles.
    Ça me rajoute un deuxième problème ça...
    1. Comme ce fait il que je n'ai pas de réponses sur ce sujet ? Je fais fausse route c'est un code bidon ?
      1. Contributeur
        salut,

        et en utilisant filter() ?
        tu peux valider un entier, en théorie tu peux même lui indiquer un min et un max mais je n'ai jamais réussi à le faire fonctionner.

        et pour les trous de sécurité, si vous ne les voyez pas en construisant une requête SQL directement avec des données utilisateurs, faut peut être arrêter de coder et vous mettre à la lecture…
        1. Je supposait que les valeurs étaient vérifiées avant la requête...