Page 1 sur 1

verification is_string

Posté : 23 août 2007, 10:45
par mosquitout
Bonjour,

Lors de la validation du contenu d'un formulaire, je fais le test 'is_string' pour des zones de saisies alphanumérique. Ce qui veut dire que je test si le contenu est bien une chaine.

Mais, dans une zone de ce type, je peux en theorie saisir n'importe quoi. Dans quel cas alors, ce test risque de me retourner une erreur ? qu'est ce que je peux bien avoir saisi dans ma zone pour que ce test me sorte une erreur ?

Merci

Posté : 23 août 2007, 10:54
par Calimero
Sachant qu'un champ de saisie de texte est toujours "set", c'est à dire que la variable existe et contient une chaîne vide même si tu ne mets rien dans le champ, je pense que is_string() dans ce cas ne sert à rien du tout. Il faut plutôt utiliser strlen() et/ou une expression régulière.

Posté : 23 août 2007, 11:07
par mosquitout
C'est bien ce que je me dis aussi.
Alors strlen ok je compare strlen($contenu) > $taille_max

Mais pour l'utilisation d'expression régulières, l'idée c'est quoi :
a) Réafficher le contenu de la zone en disant nan pas bon et l'utilisateur essaie de deviner ce qui ne vas pas et doir changer jusqu'a ce que ca soit accepter par mon expression régulière ?

b) je réaffiche le contenu en changeant d'office (supprimant) ce qui ne passe pas dans sa saisie / mon expression régulière ?

c) j'enregistre la donnée en ayant supprimer (changer) ce qui n'allait pas dans la saisie utilisateur ?

A titre d'exemple j'ai :
$contenu = eregi_replace("[^a-zA-Z0-9_&~@/,\.'()?! éèàêâôîûùç-]","",$contenu)

Posté : 23 août 2007, 11:16
par Ryle
C'est plus qu'un soucis de chaine vide.. toutes les valeurs envoyées via GET ou POST sont considérées comme des chaines, is_string retournera donc toujours vrai :)

Quant au traitement des données, tout dépend de l'usage du champ. En toute logique, tu ne devrais pas changer un login ou un mot de passe.. tu peux par contre virer les balises html d'un champs texte sans lui en parler.. ou changer le nom d'un fichier qu'il veut uploader...

Quant aux explications destinée à l'utilisateur, il est préférable de lui dire ce qui ne va pas, voire pour ne pas t'embêter, lui dire ce à quoi il a droit : "Ce champ est alpha / numérique / alphanumérique .. les seuls caractères spéciaux autorisés sont .. " et au moins il passera pas 3h a essayer de comprendre pourquoi ses ":" ne passent pas ;)

Posté : 23 août 2007, 11:22
par mosquitout
Yep, merci Ryle, je vais suivre ton conseil et générer des messages d'erreur adéquates mais ca risque de devenir une véritable usine à gaz si on veut être précis dans les réponses affichées à l'utilisateur !

Quand au test 'is_string', je laisse tomber !

Posté : 23 août 2007, 11:25
par Ryle
Le plus simple est peut être de l'informer avant qu'il ne soumette le formulaire, avec une infobulle, un controle javascript ou autre... ainsi tu te conteras juste ensuite de signaler le champ en erreur, à lui ensuite de lire le mode d'emploi pour voir ce qui ne va pas :)

Posté : 23 août 2007, 11:33
par mosquitout
Mouais, tu as raison, c'est plus simple .

:wink: