Dans ColdFusion, comment puis-je déterminer si une variable existe dans le querystring sans lancer une erreur tenter de le vérifier? P>
3 Réponses :
Il y a deux options.
Le premier consiste à utiliser CFPARAM à Définir une valeur par défaut, par exemple: p> ceci garantit que vous pouvez toujours faire référence à url.varname p> la seconde consiste à utiliser ISDEFINÉE ou StructyeXIST Pour tester la présence de la variable: P> ou p>
Un moyen de plus pour CF9: ISNULL (URL.VARNAMAME)
Une astuce soignée avec cfparam est juste d'utiliser Name = "Varname" plutôt que Name = "Url.Varname" - alors il validera que Varname existe comme une URL Var ou un formulaire Var. Rend la commutation entre aller et poster facilement.
@Kevink, c'est un chemin dangereux pour descendre. Si la variable n'est pas définie dans l'URL ou les champs de formulaire, CFPARAM le créera dans la portée des variables. Il existe des effets secondaires importants mais nuancés, et vous devez vraiment être conscient de ce qui se passe réellement afin de garantir la fiabilité de votre demande.
@ADAM C'est exactement ce que je m'attends à ce qu'une variable non définie d'agir, et cela semble parfaitement cohérent (lorsque le Var n'était pas en réalité dans l'URL ou la portée de la forme) Comment s'est-il mordu dans le passé?
@Kevink Si vous prévoyez la variable de la portée de l'URL, paramètre de la portée de l'URL. Cela garantit que la valeur ne peut pas être injectée d'une autre portée. Il est également possible qu'il puisse déjà être une variables.Varname dans le code qui obtient soudainement Param'd à une autre valeur puisque vous avez laissé la portée du CFPARAM.
@Kevink Qu'est-ce que @iknowkungfoo a dit exactement raison. Vous devez utiliser:
url.foo code>, pas seulement
foo code>.
Prenez-en une autre, si vous voulez que la variable soit insensible:
C'est en fait un très bon code, car il vérifie si la variable existe ou non si elle compare alors la valeur.
J'ai utilisé cette approche dans de nombreux endroits.
en haut de la page: p> plus tard dans la page ou la balise personnalisée, vérifiez la valeur de la valeur de La variable de demande.Someval, sans crainte de ne pas s'écraser, car elle a une valeur par défaut. p>
Cela a fonctionné pour moi, surtout que je souhaite que ma page ait un comportement par défaut des moments où il n'y a pas de valeurs de querystring.
dans
param url.varname; // throws error if it does not exist
param url.varname = ""; // sets value it was not already set