8797 sujets

Développement web côté serveur, CMS

Pages :
(reprise du message précédent)

SkyCorp a écrit :
...et je voudrais qu'elle soit parfaite tout en comprenant ce que je fais.
Ben le mieux pour comprendre est de ne reprendre du code que lorsqu'on comprend ce qu'il fait. Smiley cligne

Bon alors pouf pouf !

1) réception d'une variable soumise :
$prenom = !empty($_POST['prenom']) ? $_POST['prenom'] : '';

2) insertion en base :
$sql = 'insert into ma_table (prenom) values (' . mysql_real_escape_string($prenom) . ')';

3) affichage html (ou mail) :
echo '<p>Prénom : ' . htmlspecialchars($prenom) . '</p>';


Pour ce qui est de ne pas faire le htmlspecialchars avant sauvegarde je vois au moins 2 raisons :
1) cela permet de comprendre à quoi sert cette fonction.
2) les chaînes de caractères sont plus longues après avoir subi cette fonction et ce n'est pas logique de stocker plus de caractères que nécessaire.

Bien sûr il n'y a pas mort d'homme si tu décides de le faire quand même...
Modifié par Heyoan (01 May 2009 - 17:23)
Heyoan a écrit :
Ben le mieux pour comprendre est de ne reprendre du code que lorsqu'on comprend ce qu'il fait. Smiley cligne

Tout à fait d'accord, d'où toutes mes questions. Heureusement que tu es là pour m'aiguiller Smiley smile .

Je viens de jeter un coup d'oeil à mon code et ai juste modifié un ou 2 éléments (sans me baser sur ton code) et je n'ai plus de message d'erreur, même en associant mysql_real_escape_string et htmlspecialchars() comme c'était le cas avant. Je ne sais plus trop ce que j'avais fait avant, mais plus de problème à ce niveau.

Concernant ta seconde remarque sur htmlspecialchars(), c'est vrai qu'alléger la base est toujours bienvenue. Pour ta première remarque, je ne sais pas trop si tu t'adressais à moi en particulier ou non, mais pourquoi pas après tout. Quoiqu'il en soit, j'ai choisi de suivre tes conseils.
Ma page fonctionne très bien à présent.

J'aurais juste une dernière petite question.
Tu avais indiqué auparavant la commande suivante :
if($_SERVER['REQUEST_METHOD']=='POST')

tandis que ma version était alors
if (isset($_POST['submit']) && $_POST['submit'] == "Valider")

Ces 2 lignes fonctionnent, mais as-tu une recommandation quelconque concernant le choix de l'une ou l'autre de ces commandes ?
SkyCorp a écrit :
Ces 2 lignes fonctionnent, mais as-tu une recommandation quelconque concernant le choix de l'une ou l'autre de ces commandes ?
Eh bien tout dépend des cas :

* si on a juste besoin de savoir qu'un formulaire (en method="post" pour l'exemple) a bien été soumis il suffit de faire
if($_SERVER['REQUEST_METHOD']=='POST') {
ou
if(!empty($_POST)) {

* la seconde forme ne sert à priori qu'à savoir quel formulaire a été soumis quand il y en a plusieurs :
<!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>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Test formulaire</title>
<style type="text/css">
.alert {
	color:#990000;
}
</style>
</head>
<body>
<?php
if (isset($_POST['form1'])) { 
	echo '<p>Le formulaire 1 a été soumis</p>';
}
if (isset($_POST['form2'])) { 
	echo '<p>Le formulaire 2 a été soumis</p>';
}
?>
<form action="<?php echo htmlspecialchars($_SERVER['PHP_SELF']); ?>" method="post">
<fieldset>
	<legend>Formulaire 1</legend>
	<p>
		<label for="nom1">Nom 1 : </label>
		<input type="text" id="nom1" name="nom1" />
	</p>
	<p>
		<input type="submit" name="form1" value="Envoyer" />
	</p>
</fieldset>
</form>
<form action="<?php echo htmlspecialchars($_SERVER['PHP_SELF']); ?>" method="post">
<fieldset>
	<legend>Formulaire 2</legend>
	<p>
		<label for="nom2">Nom 2 : </label>
		<input type="text" id="nom2" name="nom2" value="" />
	</p>
	<p>
		<input type="submit" name="form2" value="Envoyer" />
	</p>
</fieldset>
</form>
</body>
</html>
Donc pas réellement de différences dans le cas d'un seul formulaire.

Bon, après avoir paramétré l'envoi de mail et 1 ou 2 paramétrages supplémentaires, tout fonctionne à merveille à présent ! Smiley biggrin

Merci beaucoup Heyoan pour ton aide, qui m'a été d'un grand secours.
Je pense que l'on peut considérer ce sujet comme résolu à présent. Smiley smile
Pages :