Vérifcation de champs(php)

Fermé
Garth - 18 févr. 2012 à 20:57
AssassinTourist Messages postés 5709 Date d'inscription lundi 16 janvier 2012 Statut Contributeur Dernière intervention 29 février 2024 - 20 févr. 2012 à 20:48
Bonsoir,

Je cherche à vérifier si le champ 'identifiant' de mon formulaire est valide.

Il doit contenir que des lettres et chiffres et le symbole _(underscore).
Je suit toujours en galère avec les expressions régulière et pour quelqu'un s'y connaissant ça doit pas être si complexe.
J'ai beau avoir cherché sur le www, je ne trouves que la vérification des emails.

Merci


A voir également:

4 réponses

mimigenie Messages postés 1180 Date d'inscription dimanche 3 janvier 2010 Statut Membre Dernière intervention 4 août 2018 312
18 févr. 2012 à 21:38
A mon avis tu n'as pas cherché avec les bons mots-clef ;)

Mais voila de quoi t'aiguiller : https://forum.hardware.fr/hfr/Programmation/php-verifier-alphanumerique-sujet_14031_1.htm

Mais ce code utilisant une fonction obsolète si tu utilises php 5.3, tu dois utiliser preg_match à la place.

Il te suffit de modifier légèrement le code pour qu'il prenne en compte l'underscore.
0
Merci de ta réponse,
Oui en effet ereg est obsolète à partir de php 5.3, ça m'as bloqué
(ce qui n'est pas le cas du serveur que je veut utiliser et obsolète/depreciated veut pas dire que ça marchera pas; mais bon on sait jamais, je préfères avoir le code au mieux sur ce genre de trucs tout bêtes...)

Bon tant pis pour le mal de crâne du dév qui se la joue vin rouge en fin de journée de codage et toujours devant son php:
Donc avec preg_match

$mavaleur=$_POST['machin']; 
$pattern = '/_a-z0-9/i';  
/* Le "i" après le délimiteur du pattern indique que la recherche ne sera pas sensible à la casse*/ 

if(!preg_match($pattern, $mavaleur)){ 
echo "Glop!"; 
}else{ 
echo "Pas Glop!!!"; 
};


Je vais tester de ce pas, et trinquer à ta santé mimi

edit: j'ai du rater un truc parce que quand

$mavaleur="tr1546#%} éXz.#uc bid_*ule";
J'ai droit à "Glop!"
0
mimigenie Messages postés 1180 Date d'inscription dimanche 3 janvier 2010 Statut Membre Dernière intervention 4 août 2018 312
18 févr. 2012 à 22:17
Et si tu rajoutes des crochets pour avoir $pattern = '/[_a-z0-9]/i'; ?
Perso je n'ai jamais réussi à utiliser cette fonction correctement ^^
0
Pareil avec les crochets,
Perso je n'ai jamais réussi à utiliser cette fonction correctement ^^
On sera 2 au moins alors...
Bon je ferait ça quand le reste sera terminé, quitte à découper mes chaînes pour tester les caractères 1 par un et vérifier s'ils sont des chiffres ou des lettres uniquement:s.
0
AssassinTourist Messages postés 5709 Date d'inscription lundi 16 janvier 2012 Statut Contributeur Dernière intervention 29 février 2024 1 310
20 févr. 2012 à 10:56
Bonjour,
Essayez de faire petit à petit. Déjà, est-ce que ça marche avec ça :
$pattern = '[a-zA-Z0-9]';

(donc sans _, et sans s'occuper de la casse pour l'instant)
0
Merci à toi aussi Assassin Tourist,

Avec ceci $pattern = '[a-zA-Z0-9]';

J'ai Glop! uniquement si la valeur testée contient "a-zA-Z0-9"(sans autre caractère intercalé entre, autour ça fonctionnes tant qu'il y a a-zA-Z0-9 sans rien intercalé ), preg_match() vérifie si l'expression existe dans la chaîne testée. Cela ne convient pas pour tester si il n'y a bien que des lettres, chiffres, et pas de caractères spéciaux.
0
AssassinTourist Messages postés 5709 Date d'inscription lundi 16 janvier 2012 Statut Contributeur Dernière intervention 29 février 2024 1 310
20 févr. 2012 à 20:48
Je proposais de faire petit à petit ;p
Essaye en rajoutant le _ et voir si ça fonctionne avec un _ quelque part.

$pattern = '[a-zA-Z0-9_]';
0