
| auteur : Eric Berger | a) Avant l'envoi du formulaire
La vérification avant envoi ne peut se faire en PHP, PHP étant un langage serveur, elle devra donc être faite à l'aide d'un langage client, généralement javaScript.
Cette vérification est utile dans le sens oû elle évite d'envoyé des données mal formatées vers le serveur, mais elle n'est pas fiable, car on ne peut contrèler de manière certaine le client et ce qu'il envoie (le javaScript peut être désactivé dans le navigateur, par exemple).
b) Avant enregistrement
C'est le meilleur moment pour vérifier les données, ceci assure que les données enregistrées respectent les règles fixées. La vérification avant enregistrement ne doit cependant porter que sur la validité du format des données et leur compatibilité avec les outils et supports (bdd, php).
c) Avant l'utilisation
À ce moment, les données devraient déjà être validées. Si ce n'était pas le cas, ça voudrait dire que des données invalides ont été sauvegardées, ce qui n'est pas acceptable. Il se peut cependant que des données doivent être préparées en vue d'une utilisation particulière, par exemple en supprimant les tags HTML pour l'affichage sur une page web. Dans ce cas seulement, une vérification des données se fera avant leur utilisation.
|
| auteur : Eric Berger |
-
Les caractères interprétables par HTML et les caractères accentués ou spéciaux
C'est la fonction htmlspecialchars() qui se charge de
remplacer les caractères suivants* :
& ' " < > par leur entité HTML. Cette
fonction est également très utile si on veut présenter
un exemple de code HTML dans une page web.
Quant aux caractères accentués ou spéciaux, c'est la
fonction htmlentities() qui est sollicitée. Elle fonctionne
de la même manière que htmlspecialchars() mais s'applique
à tous les caractères qui ont un équivalent en entité HTML.
il est également possible d'ignorer les quote simples et doubles.
* Il est possible de faire ignorer les quotes simple et doubles par la fonction.
-
Si on a à faire à une chaîne vide :
Il est parfois utile de savoir si on a affaire à une
chaîne vide, afin de ne pas enregistrer la donnée ou
d'ajouter une valeur par défaut.
En utilisant l'instruction suivante, il est possible de le savoir.
if (strlen($ chaine ) < 1){
echo " la chaîne est vide " ;
} else {
echo " la chaîne n ' est pas vide " ;
}
|
|
lien : Comment se protéger de la faille XSS ?
lien : Comment se protéger des failles d'injection ?
|
| auteur : Julp | Soit le champ de formulaire de méthode POST suivant :
< input type = " text " name = " mon_champ " . . . >
|
Tester si $_POST["mon_champ"] est un entier :
if (is_numeric($ _POST [ ' mon_champ ' ] ) & & (intval(0 + $ _POST [ ' mon_champ ' ] ) = = $ _POST [ ' mon_champ ' ] )) {
echo ' Saisie correcte ! ' ;
} else {
echo ' Saisie incorrecte ! ' ;
}
|
Tester si $_POST["mon_champ"] est un réel :
if (is_numeric($ _POST [ ' mon_champ ' ] )) {
echo ' Saisie correcte ! ' ;
} else {
echo ' Saisie incorrecte ! ' ;
}
|
Tester si $_POST["mon_champ"] est une adresse email valide :
if (ereg(' ^.+@.+\\..+$ ' , $ _POST [ ' mon_champ ' ] )) {
echo ' Email valide ! ' ;
} else {
echo ' Email invalide ! ' ;
}
|
|
| auteur : Cyberzoide |
La syntaxe d'un champ input de type text est la suivante :
< input type = " text " name = " nom " value = " valeur " / >
|
Selon la norme XHTML, les valeurs des attributs des balises doivent être délimitées par des doubles quotes. Exemple exact : | < input type = " text " name = " nom " value = " <?php echo $ nom ; ?> " / >
|
Exemple inexact : | < input type = " text " name = " nom " value = <?php echo $ nom ; ?> / >
|
Dans ce dernier exemple, si la variable $nom comporte des espaces, le navigateur n'interprétera pas le reste de la chaîne de caractères.
De même, si cette variable contient des doubles quotes, il faudra les déspécialiser avec la fonction htmlentities() ou htmlspecialchars(), sinon ils vont interférer avec les doubles quotes de délimitation de la valeur d'attribut. |
lien : Comment se protéger de la faille XSS ?
|
| auteur : Forum PHP |
Cela peut être utile pour vérifier le contenu des données
transmises par un formulaire quelque soit la méthode
($_GET ou $_POST).
On utilise donc la fonction
print_r()
qui affiche des informations à propos d'une variable, de
manière à ce qu'elle soit lisible.
Exemple :
Ce code peut également être utilisé pour afficher le contenu
de $_POST, $_SESSION ou $_SERVER
|
lien : Comment afficher (pour vérification) le contenu d'un tableau ?
|
| auteur : doof | Une fois de plus, on va faire appel aux expressions régulières et à la fonction preg_match.
if (preg_match(' #(^[\d(]+[ +*()/\d-]*[\d)]+$)# ' , $ txt )) {
. . .
}
|
Avec ce masque, il est même possible de remplacer toutes les opérations par leur résultat dans une chaine quelconque :
$ txt = ' (5 + 2) * 11 ' ;
$ txt = @ preg_replace(' #([\d(]+[ +*()/\d-]*[\d)]+)#e ' , " & # 39 ; < b > & # 39 ; . round ( $ 0 , 3 ) . & # 39 ; < / b > & # 39 ; " , $ txt );
echo $ txt ;
|
Il vaut mieux vérifier avant qu'elle ne renvoie pas d'erreur (ou utiliser l' inhibiteur d'erreur), une parenthèse non fermée ou une division par zéro va entrainer une erreur.
|
| auteur : Thes32 |
Soit une liste dans un formulaire contenant cinq prénoms. Afin de retenir la sélection de l'internaute, nous allons définir le cible du formulaire comme le script lui même :
<?php
$ selected = isset( $ _GET [ ' prenom ' ] ) ? $ _GET [ ' prenom ' ] : " " ;
$ selectedValue = ' selected="selected" ' ;
?>
< form method= " get " >
< select name= " Prend " >
< option value= " Jean " <?php if ( $ selected = = " Jean " ) echo $ selectedValue ?> > Jean< / option>
< option value= " Bob " <?php if ( $ selected = = " Bob " ) echo $ selectedValue ?> > Bob< / option>
< option value= " Marie " <?php if ( $ selected = = " Marie " ) echo $ selectedValue ?> > Marie< / option>
< option value= " Charlotte " <?php if ( $ selected = = " Charlotte " ) echo $ selectedValue ?> > Charlotte< / option>
< / select>
< br/ >
< input type= " submit " value= " Envoyer " / >
< / form>
|
|
| auteur : Jérôme | Il faut bien évidemment que le formulaire et son traitement se trouvent dans le même fichier. Vous devez d'abord récupérer les valeurs de cette liste si le formulaire a déjà été envoyé
<?php
$ listemul = $ _POST [ " listemul " ] ;
|
Rappel : comme on utilise une liste multiple, pour pouvoir récupérer toutes les valeurs sélectionnées, il faut en faire un tableau (par conséquent on a récupéré un tableau).
On veut donc ensuite afficher le formulaire avec comme valeurs pré-sélectionnées les choix qui ont été effectués précédemment. On doit donc vérifier pour chaque option de la liste si sa valeur se trouve dans le tableau que l'on a récupéré. Pour cela, on utilise la fonction in_array(arr, cherche[, boolstrict]) qui va vérifier si la valeur cherche se trouve dans le tableau arr. Le paramètre optionnel boolstrict effectue une vérification sur le type de cherche et de la valeur trouvée (inutile ici).
Le code du formulaire:
< form method = " post " >
< select name = " listemul [ ] " size = " 4 " multiple >
< option value = " 0 " <?php if (isset($ listemul ) & & in_array(' 0 ' , $ listemul )) echo " selected " ; ?> > choix 1< / option >
< option value = " 1 " <?php if (isset($ listemul ) & & in_array(' 1 ' , $ listemul )) echo " selected " ; ?> > choix 2< / option >
< option value = " 2 " <?php if (isset($ listemul ) & & in_array(' 2 ' , $ listemul )) echo " selected " ; ?> > choix 3< / option >
< option value = " 3 " <?php if (isset($ listemul ) & & in_array(' 3 ' , $ listemul )) echo " selected " ; ?> > choix 4< / option >
< / select >
< input type = " submit " >
< / form >
|
On utilise également la fonction isset() pour vérifier que le tableau $listemul existe, dans le cas contraire, la fonction in_array() sur une variable qui n'existe pas provoquerait une erreur.
|
Consultez les autres F.A.Q.
Les sources présentés sur cette page sont libres de droits,
et vous pouvez les utiliser à votre convenance. Par contre cette page de présentation de ces sources constitue une oeuvre intellectuelle protégée par les droits d'auteurs.
Copyright ©2003
Developpez LLC. Tous droits réservés Developpez LLC.
Aucune reproduction, même partielle, ne peut être faite de ce site et de
l'ensemble de son contenu : textes, documents et images sans l'autorisation
expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu'à 3 ans
de prison et jusqu'à 300 000 E de dommages et intérêts.
Cette page est déposée à la SACD.
|