8796 sujets

Développement web côté serveur, CMS

Bonjour à tous et à toutes,

je suis, actuellement, en train d'apprendre le langage PHP sur ce site.

Aujourd'hui, j'ai réalisé un code qui vérifie un champ d'un formulaire lorsqu'on clique sur le bouton.

Pour être plus explicite voici mon code :


<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" lang="fr">
    <head>
        <title>Test</title>
        <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
		<link rel="stylesheet" media="screen" type="text/css" title="Design" href="design.css" />
    </head>
	
<body>

    <div id="page">
	    <div class="content">
		    <h1>Formulaire d'inscription</h1>
			
			<form action="inscription.php" method="post">
			<p>
			<label for="pseudo"><span class="obligatoire">*</span>Votre pseudo :</label><input type="text" id="pseudo" name="pseudo" size="25" maxlength="15" /><br />
			<label for="envoyer"></label><input type="submit" name="envoyer" id="envoyer" value="Valider" /><br />
			<?php
                $pseudo = htmlspecialchars($_POST['pseudo']); // On récupère la variable. 
					
					// Débute un bloc if, else afin de vérifier si ce champ a été rempli ou non.
					
					if(!isset($pseudo)) // !isset signifie que la variable n'existe pas du tout, donc ça c'est quand il arrive la première fois sur la page.
					{
						echo "Veuillez remplir le champ pseudo";
					}
						elseif(empty($pseudo)) // Sinon si le champ pseudo n'est pas rempli, on affiche un message.
						{
							echo "Le champ pseudo est <span class='obligatoire'>obligatoire</span> !";
						}
					else // Sinon, on affiche la phrase de rappelle.
					{
					    echo "Veuillez remplir le champ pseudo";
					}
			?>
			</p>
			</form>
			
			<p>L'étoile <span class="obligatoire">*</span> placée devant un champ indique que ce champ est <span class="obligatoire">obligatoire</span>.
			</p>
			
		</div>
	</div>

</body>
</html>


Premièrement, je voudrais savoir si la manière de vérifier ce champ est logique et bien édifiée ou non.

Deuxièment, si je veux restreindre certains caractères pour le pseudo, dois-je absolument opter pour les RegEx (ça m'a l'air d'un compliqué inimaginable) ? Ou existe-t-il une ou plusieurs autre(s) méthode(s) ?

Cordialement.
jQz
salut

alors et avant tout le site en question est plutôt sympà mais à mon humble avis pour le php, ce n'est pas la meilleure approche, mais ce n'est que mon avis.

http://fr2.php.net/manual/fr/index.php
http://www.codyx.org/
http://www.phpcs.com

beaucoup plus actualisés et utiles.



<html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" lang="fr">
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
		  <title>Test</title><!--title se place toujours après les métas-->
		  <link rel="stylesheet" media="screen" type="text/css" title="Design" href="design.css" />
    </head>
	
<body>

<div id="page">
<div class="content">
<h1>Formulaire d'inscription</h1>
<?php
$envoi = htmlentities($_SERVER['PHP_SELF']);
$form = <<<EOF
<form action="$envoi" method="post">
<p>
<label for="pseudo"><span class="obligatoire">* </span>Votre pseudo : </label><input type="text" name="pseudo" size="25" maxlength="15" /><br />
<input type="submit" name="envoyer" id="envoyer" value="Valider" /><br />
</p>
</form>
<p>L'étoile <span class="obligatoire">*</span> placée devant un champ indique que ce champ est <span class="obligatoire">obligatoire</span>.</p>
EOF;
if (!isset($_POST['envoyer'])) {
	echo $form;
}
else {
	if (isset($_POST['pseudo']) && !empty($_POST['pseudo'])) {
		$titre = trim(strip_tags($_POST['pseudo']));
		echo 'traitement de $titre';
	}
	else {
		echo '<p>Le champ pseudo est <span class="obligatoire">obligatoire</span> !</p>';
		// réaffiche le form pour corriger
		echo $form;
    }
}
?>
</div>
</body>
</html>


voilà le code retouché

pour la restriction de caractères il existe déjà, pour le nombre, maxlength de la balise input.pour le reste les regex ne sont pas aussi compliquées

http://www.expreg.com

maintenant ce n'est pas obligatoire, tout dépend du filtrage envisagé.à chaque problème sa solution.strip_tags, htmlentities,
trim, font une bonne partie du filtrage.pour interdire certains caractères point de salut, les regex, ont à rien fait de mieux.si tu veux un coup de main pour les regex fait moi signe.
Modifié par keran (18 May 2009 - 13:54)
Merci à toi de m'avoir répondu et merci d'avoir directement retouché le code PHP.

Ta retouches a beaucoup améliorer le code qui s'approche de plus en plus de ce que je veux atteindre Smiley cligne .

Je penserai à toi si j'ai quelques difficultés à propos de Regex.