|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | ||
|
Invité de passage
![]() Victor Inscription : avril 2011 Messages : 3 ![]() |
Bonjour à tous.
Je poste pour la première fois sur un forum ayant sujet au php. J'ai jusqu'ici réussis à trouver avec google et autre les solutions à mes problèmes, sachant que pour la plus part des cas, quelqu'un a déjà rencontrer un problème similaire. Je viens vers vous cette fois car malgré les tests différents et les recherches sur de nombreux forum, je ne trouve pas la solution. Tout betement, je veux vérifier :
Ayant tester dans plusieurs sens, je ne comprend pas pourquoi pour le nombre entier quelquonque, la vérification de l'entier me renvois false et m'affiche donc le message d'erreur contenue dans l'else. Je récupère la variable avec extract ($_POST); Et le fais que le message d'erreur s'affiche prouve que la variable existe. sinon il ne ferait même pas le test. Je débute en php et il se peut que je ne code pas dans les règles ou que j'utilise des vérifications inutiles, mais Merci du coup de main. Voici mon code : Code :
|
||
|
|
00
|
|
|
#2 | ||
|
Membre Expert
![]() Baptiste ROUSSELÉtudiant Inscription : janvier 2011 Messages : 802 ![]() |
$_POST comme toutes les autres variables superglobales considèrent que les variables sont de type String.
Chose que tu pourrais constater avec var_dump() de ta variable. Je te conseille donc de passer par intval() et vérifier que le retour de intval() est égal à la chaîne de caractères (en raison de la flexibilité de PHP à convertir des nombres d'une chaîne de caractères en nombre.) Dans le cas d'une chaîne de caractère qui n'est pas un entier le retour de intval() sera 0 ce qui sera forcement différent de ta chaîne. Code :
|
||
|
|
10
|
|
|
#3 | |
|
Expert Confirmé
![]() Inscription : janvier 2010 Messages : 2 709 ![]() |
Salut
Le principe général me semble correcte, sauf peut être un qui demande précision. empty() inclus la valeur 0 (et même "0"), pourtant, 0 est non seulement un numérique, mais aussi un entier. Si le but est d'obtenir des valeurs strictement supérieurs à 0, alors Ok, sinon ça va pas. 0 est vraiment un cas particulier, de même que false peu semer la zizanie. Le plus simple c'est de se référer à la doc concernant : empty() Et faire des essai. Citation:
Là encore, extract() est très particulier, lis la doc pour t'en rendre compte : extract()
__________________
Win XP | WampServer 2.2d | Apache 2.2.21 | Php 5.3.10 | MySQL 5.5.20 Si debugger, c'est supprimer des bugs, alors programmer ne peut être que les ajouter [Edsger Dijkstra] |
|
|
|
10
|
|
|
#4 | |||
|
Invité de passage
![]() Victor Inscription : avril 2011 Messages : 3 ![]() |
Bonsoir. Merci pour vos réponses.
Je viens d'appliquer intval() comme tu me l'as conseillé transgohan et cela fonctionne, Merci. Code :
Ça ne me parle pas, même si je l'ai lu à plusieurs reprise dans le manuel php, je n'ai jamais eu à chercher des infos dessus. Si jamais tu n'as pas le temps d'y répondre je ferais une recherche. Citation:
RunCodePhp, merci pour tes conseils mais j'aimerais quelques précisions. Pour bien en comprendre tout le sens. Dans le cas présent, j'utilise (!empty) car je souhaite juste savoir si la variable est remplie et qu'elle ne correspond pas à 0. ( Je vérifie si l'utilisateur à préciser un Time heure ou minute. Même s'il a mis 0 heure je souhaite que la le script ne continue pas. J'ai donc pensé que "empty" était plus approprié que "isset" ou autre...( que je ne connais surement pas.) Si tu penses que je devrais faire ce contrôle d'une autre manière je veux bien avoir ton avis. Mais pour le moment, "empty" à réussis les tests que j'ai pu faire. Sinon tu me conseilles d'être prudent avec extract(), pour quelle raison ? Dans cette situation je récupère les données d'un formulaire de 15 variables envoyés par Post. Les données transmises ne peuvent arriver que par une seul page. Une petite question me vient à l'esprit en écrivant ces lignes... Peut-on appliquer en une ligne la fonction "htmlentities()" à toutes les variables récupérer par Post. Du style : extract (htmlentities($_POST)); ou dans le genre. Dans tous les cas, Merci pour votre aide précieuse et merci à tous ceux qui font vivre les forums php car sans eux je serais bien perdu ... Bonne soirée. Ykouko |
|||
|
|
00
|
|
|
#5 | |||||
|
Membre Expert
![]() Baptiste ROUSSELÉtudiant Inscription : janvier 2011 Messages : 802 ![]() |
Citation:
Ainsi si tu as une variable $id qui défini l'identifiant de la personne connectée je n'ai qu'à me créer un champs input de name id qui contiendra l'id de l'administrateur pour écraser ta variable. Citation:
Code php :
Citation:
|
|||||
|
|
00
|
|
|
#6 | ||||
|
Expert Confirmé
![]() Inscription : janvier 2010 Messages : 2 709 ![]() |
Citation:
Citation:
Citation:
Il est dit, je cite : Citation:
Vu que tu débute, je ne suis pas certain que tu as bien pris en compte ce que provoque cette fonction. A une époque (Php4), beaucoup l'utilisait à tord et de travers. Ce qui s'appelle un vrai fausse bonne idée. Le piège de cette fonction appliquée sur des données extérieurs comme POST, GET, etc ... c'est que ça incite d'abord à minimiser les vérifications sur ces données qui pourtant demande des précautions. Mais pire, faut bien percevoir quelle va extraire absolument toutes les données contenu dans le tableau, et les convertir en variable. Donc pas seulement celles que ton code va prévoir de vérifier, mais toutes les autres qu'un pirate plus malin que les autres pourra rajouter. Par conséquent on ouvre une porte, de donner la possibilité à quelqu'un d'injecter des données non désirées. Cette fonctionne utilisée dans ce contexte là est inévitablement un manque de sécurité. Mais c'est pas tout, cette fonction effectue encore d'autres opérations qui peuvent avoir des effets indésirables. Voir la doc. Vois tu mieux ?
__________________
Win XP | WampServer 2.2d | Apache 2.2.21 | Php 5.3.10 | MySQL 5.5.20 Si debugger, c'est supprimer des bugs, alors programmer ne peut être que les ajouter [Edsger Dijkstra] |
||||
|
|
10
|
|
|
#7 |
![]() ![]() Inscription : septembre 2010 Messages : 7 103 ![]() |
tout ça se fait avec filter
regarde du coté de filter_input(_array)
__________________
http://blog.stealth35.com/ |
|
|
10
|
|
|
#8 | ||
|
Invité de passage
![]() Victor Inscription : avril 2011 Messages : 3 ![]() |
Je n'avais pas compris entièrement le sens de cette phrase, et $_post n'étant pas citer
Citation:
Citation:
|
||
|
|
00
|
Copyright © 2000-2012 - www.developpez.com