8722 sujets

Développement web côté serveur, CMS

Bonjour,

Ma consultation des forums ne m’as pas fourni de solution à mon problème.

J’ai développé un formulaire d’inscription en HTML (<meta charset="utf-8">) et PHP, qui fonctionne tour à fait correctement, sauf la validation des caractères accentués.

Les saisies des informations dans le formulaire sont du type

<?php if($nom_oblig=="oui") {echo  "<span class=\"obligatoire\">*&nbsp;</span>";} else {echo "&nbsp;&nbsp;&nbsp;";} 

          <input type="text" name="nom" id="nom"  placeholder="Votre nom (sans accent)" size="25" value="<?php echo( $nom ); ?>


Cette saisie fait l’objet d’une vérification de ce type :

$nom = filter_input( INPUT_POST, 'nom', FILTER_SANITIZE_STRING, FILTER_FLAG_ENCODE_HIGH | FILTER_FLAG_ENCODE_LOW );
        if( $nom_oblig == "oui" )
		{if( $nom === NULL OR $nom === false OR empty( $nom ) OR $nom === MAIL_NOM ) // si l'objet fourni est vide, invalide ou égale à la valeur par défaut
        {
            $errors[] = 'Veuillez saisir votre Nom.';
		}
		else {
			if (!preg_match('/^[a-zéèàùûêâôë]{1}[a-zéèàùûêâôë -]*[a-zéèàùûêâôë]$/i',$nom)) 
		{
			$errors[] = 'La syntaxe de votre nom est incorrecte.';
		}}
		}


La saisie d’un nom comportant un caractère accentué provoque l’erreur :
La syntaxe de votre nom est incorrecte.
Alors que dans le preg_match les caractères accentués sont déclarés.
Lors de l’affichage de cette erreur les données saisies dans le formulaire sont conservées et affichées, toutefois les caractères accentués s’affiche d’une autre façon, exemple é s’affiche é.

Merci de m’expliquer ce problème ou de me donner au moins une piste de solution.

Cordialement
Patrick Mara
Bonjour,
à tous hasard, est-ce que les fichiers sources sont bien encodés en utf-8 sans BOM.
ça se vérifie très bien sous notepad++ sous le menu encodage.
slt slt, je sais pas si c'est lié à ton erreur mais tu as une accolade fermante en trop sur ton if pregmatch
JENCAL a écrit :
slt slt, je sais pas si c'est lié à ton erreur mais tu as une accolade fermante en trop sur ton if pregmatch


Pas trouvé... (et j'ai compté sous notepad++ les () {} [] qui sont tous en nb égaux 2 à 2, sauf erreur, bien sûr).
Effectivement, c'est juste l'indentation que tu as partagé sur alsacréation qui pourrie
Modifié par JENCAL (27 Oct 2021 - 15:00)
Bonjour Jencal
Sur un précédent sujet que j'avais posté sur le forum d’Alsacréation, vous  avez eu la gentillesse d’intervenir ce dont je vous remercie comme je vous remercie pour vos dernières interventions sur mon sujet actuel.
Mais je vous recommande de faire  attention à votre vocabulaire ,le terme « pourri «  que vous utilisez pour qualifier mon code, me dérange. Il faut comprendre que tous ceux qui postent sur ce forum ne sont pas forcément des spécialistes et qu'ils ne disposent peut être pas des applications ou des connaissances nécessaires pour indenter correctement un code, 

Ceci dit, s'il y a une accolade en trop dans mon code elle n’est pas la cause de mon problème.
A noter que mon fichier est bien encodé en utf8 sans bôme 

Bien cordialement
Slt slt, désolé si le mot pourri te dérange, mais je parlé de l'indentation qui est géré par alsacréationS, pas de ton code. je ne juge pas ton travail ne t'inquiète pas Smiley smile
Modifié par JENCAL (28 Oct 2021 - 10:05)
J'ai tester ton code vite fait sur sandbox


$nom = "teééèèststs";

if (!preg_match('/^[a-zéèàùûêâôë]{1}[a-zéèàùûêâôë -]*[a-zéèàùûêâôë]$/i',$nom)) 
{
	echo 'La syntaxe de votre nom est incorrecte.';
}

echo "test";


à aucun moment j'ai mon echo 'La syntaxe de votre nom est incorrecte.'; qui sort....
même si j'ai les accents.
Administrateur
Bonjour,

pmara : hors-sujet, si ton champ est obligatoire (je suppose vu l'étiquette), tu devrais ajouter un attribut required ou/et aria-required="true". Ça active la vérification par le navigateur et surtout ça l'indique aux utilisateurs.trices de lecteurs d'écran.

JENCAL a écrit :
Slt slt, désolé si le mot pourri te dérange, mais je parlé de l'indentation qui est géré par alsacréation, pas de ton code. je ne juge pas ton travail ne t'inquiète pas Smiley smile
Je vais sortir la Smiley pelleen voyant ça Smiley baille