Comment puis-je vérifier si le formulaire d'entrée est numérique en PHP?
J'ai besoin d'être en mesure de voir si un formulaire de saisie en PHP est numérique. Si elle n'est pas numérique, le site web doit rediriger. J'ai essayé is_numeric (), mais il ne semble pas fonctionner.
Exemples de Code sera agréable.
Je suis en train d'élaborer un panier qui accepte un entier de valeur pour la quantité. Je suis en train d'essayer ceci:
if(!is_numeric($quantity)){
//redirect($data['referurl']."/badinput");
echo "is not numeric";
}
veuillez vous poste un peu de code pour que nous puissions comprendre pourquoi is_numeric() ne fonctionne pas pour vous.
OriginalL'auteur | 2008-11-25
Vous devez vous connecter pour publier un commentaire.
Ce que vous avez ici sont imbriquées les conditions.
Disons quantité de $1.
La première condition prend la valeur 1 == 0 et renvoie la valeur FALSE.
La deuxième condition vérifie si la valeur FALSE est numérique et retourne FALSE parce que de FAUX n'est pas numérique.
il suffit d'écrire:
Ouais, j'ai raté toutes ces petites erreurs. Merci
OriginalL'auteur markus
Vous devriez probablement vous expliquer ce que vous entendez par "numérique" de l'intégrale, la virgule flottante, notation exponentielle, etc?
is_numeric()
va accepter toutes ces.Si vous voulez vérifier qu'une chaîne de caractères ne contient rien d'autre que des chiffres, alors vous pouvez utiliser une expression régulière, par exemple
Si vous allez utiliser la valeur réelle, comme si c'était un nombre entier, vous aurez probablement envie de passer au travers d'
intval()
de toute façon, qui sera de retour0
si la valeur ne peut pas être analysé - si0
est une valeur valide, alors vous aurez probablement à gérer que d'une certaine façon, peut-être en limitant le bas de la fourchette de la valeur.Tout à fait raison, et corrigé; merci!
OriginalL'auteur Rob
Il pourrait également être judicieux de faire quelques côté client de la validation de la saisie à l'aide de JavaScript.
L'aller-retour vers le serveur et le dos est long pour ce que pourrait constituer une faute de frappe, et vous allez réduire la surcharge du serveur en faisant le navigateur client de faire un peu de l'assurance de la qualité à l'avance.
OriginalL'auteur infoxicated
Vérifier is_int et is_numeric. Il y a des exemples dans chacun des liens. Si vous avez besoin de plus d'aide, je voudrais afficher les données que vous rencontrez des problèmes avec et un exemple de code.
EDIT:
sera toujours numérique, car elle renvoie un booléen (1 ou 0). La bonne chose à faire:
ou
OriginalL'auteur gpojd
Une autre alternative est
ctype_digit
. À partir de la documentation:OriginalL'auteur John Conde
Ce que Rob a dit, même si au lieu d'expressions régulières pour vérifier les chiffres, je voudrais utiliser ctype_digit
OriginalL'auteur Tom Ritter
tharkun a la meilleure réponse à ce jour. Si vous vous posez une question comme ça, j'imagine que vous n'avez pas vraiment envie de commencer à déconner avec le reg-exp est juste.
Repenser votre logique. Pourquoi voulez-vous de vérifier pour voir si $quantite==0 est une valeur numérique? Si vous êtes en essayant d'éviter les erreurs de b/c vous pensez que c'est possible pour la quantité pour ne pas avoir une valeur assignée, vous êtes arrivée un peu en retard. C'est un très commun (et infâme) trou de sécurité dans votre application -- si la quantité de $a une valeur dérivée de la saisie de l'utilisateur, assurez-vous de désinfecter l'entrée avant qu'il n'atteigne ce point dans l'exécution. Comme une petite partie de la question, vous n'aurez pas besoin d'assigner une valeur par défaut, parce que vous aseptisé votre entrée précédemment (et que la désinfection est là que vous avez affaire avec un " non " de la situation).
Bonne chance!
OriginalL'auteur Travis Leleu
Utiliser des expressions régulières:
/^\d+$/
devrait résoudre le problèmeOriginalL'auteur Mad Scientist
Essayez ceci:
OriginalL'auteur fausto