Précédent   Forum des professionnels en informatique > PHP > Langage > Formulaires
Formulaires Forum d'entraide sur les formulaires avec PHP. Avant de poster -> FAQ formulaires, Cours de formulaires et Sources de formulaires
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 06/02/2011, 10h09   #1
Invité de passage
 
Inscription : février 2011
Messages : 2
Détails du profil
Informations forums :
Inscription : février 2011
Messages : 2
Points : 0
Points : 0
Par défaut Meilleure façon de traiter les données transmises par formulaire

Bonjour,

Depuis que j'ai commencé a programmer en PHP, je me suis toujours demandé quelle est la meilleure façon de traiter un formulaire parmi ces trois : (si vous connaissez mieux je suis preneur)

1) Formulaire et traitement dans un même fichier .php

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
<?php
session_start();
 
if(isset($_POST['log'], $_POST['pwd'])){
	$log = empty($log) ? '' : htmlspecialchars($_POST['log']);
	$pwd = empty($log) ? '' : htmlspecialchars($_POST['pwd']);
 
	// Traitement BDD, mise en place des sessions et autres
	$_SESSION['connect'] = true;
}
 
if(isset($_SESSION['connect'])){
	echo '<p>Bienvenue</p>';
} else {
?>
<form action="method1.php" method="post">
	<input type="text" name="log"/>
	<input type="password" name="pwd"/>
	<input type="submit" value="Envoyer"/>
</form>
<?php
}
?>
2) Formulaire et traitement dans un deux fichiers distincts.
Le fichier de traitement ne sert qu'a ce formulaire :


Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<?php // Formulaire
session_start();
 
if(isset($_SESSION['connect'])){
	echo '<p>Bienvenue</p>';
} else {
?>
<form action="method2_trait.php" method="post">
	<input type="text" name="log"/>
	<input type="password" name="pwd"/>
	<input type="submit" value="Envoyer"/>
</form>
<?php
}
?>
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
<?php // Traitement
session_start();
 
if(isset($_POST['log'], $_POST['pwd'])){
	$log = empty($log) ? '' : htmlspecialchars($_POST['log']);
	$pwd = empty($log) ? '' : htmlspecialchars($_POST['pwd']);
 
	// Traitement BDD, mise en place des sessions et autres
	// if [...]
	$_SESSION['connect'] = true;
}
 
header('location: method2.php');
?>
3) Formulaire et traitement dans un deux fichiers distincts.
Le fichier de traitement peut servir a traiter d'autres actions similaires (formulaires) :


Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<?php // Formulaire de connexion
session_start();
 
if(isset($_SESSION['connect'])){
	echo '<p>Bienvenue</p>';
} else {
?>
<form action="method3_trait.php?act=login" method="post">
	<input type="text" name="log"/>
	<input type="password" name="pwd"/>
	<input type="submit" value="Envoyer"/>
</form>
<?php
}
?>
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
<?php // Traitements multiples, dont la connexion
session_start();
 
$act = isset($_GET['act']) ? htmlspecialchars($_GET['act']) : '';
 
// Traitement connexion depuis connexion.php (par exemple)
if($act == 'login'){
	if(isset($_POST['log'], $_POST['pwd'])){
		$log = empty($log) ? '' : htmlspecialchars($_POST['log']);
		$pwd = empty($log) ? '' : htmlspecialchars($_POST['pwd']);
 
		// Traitement BDD, mise en place des sessions et autres
		// if [...]
		$_SESSION['connect'] = true;
	}
	header('location: connexion.php');
} 
// Traitement connexion depuis deconnexion.php (par exemple)
else if($act == 'logout'){
	session_unset();
	session_destroy();
	header('location: deconnexion.php');
}
[...]
else{
[...]
}
?>
Conclusion

J'imagine bien que chacune de ces manières à ses avantages et inconvénients.
(méthode 1 permet qu'en cas d'erreur, les champs du formulaires seront déjà remplis, par exemple)

Mais quand on se retrouve avec plusieurs types de traitements, du code léger (déconnexion) au code lourd (inscription, etc.), vaut-il mieux réunir formulaire et traitement, dissocier formulaire et traitement, ou regrouper les traitements similaires dans un même fichier, formulaire à part?


Merci de m'éclairer sur ce point
AsKaiser est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/02/2011, 16h44   #2
Membre émérite
 
Avatar de vorace
 
Homme
Développeur
Inscription : août 2010
Messages : 586
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Meurthe et Moselle (Lorraine)

Informations professionnelles :
Activité : Développeur

Informations forums :
Inscription : août 2010
Messages : 586
Points : 859
Points : 859
perso,
j'aime pas trop le script qui traite tout les formulaires de tes pages, pour peu que t'ai une cinquantaine (j'exagère un peu, quoi que sur certain site non...) de formulaires à traiter, ton script devient très vite compliqué et chargé,
après en dehors de toute caractéristique technique ou de sécurité ou quoi se soit je préfère séparer le formulaire du traitement et pour chaque formulaire j'ai un script qui traite, parfois si mes formulaires concernent la même chose (du genre ajout, modification ou suppression) les traitements se font dans un même script...
J'utilise toujours un script pour un formulaire, du moment que leurs noms soient explicites...
Dans l'absolu, c'est au filling et selon tes besoins que tu aviseras, alors fais comme tu le sens...en espérant t'avoir un peu éclairé.
vorace est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/02/2011, 22h00   #3
Modérateur
 
Inscription : septembre 2010
Messages : 7 101
Détails du profil
Informations forums :
Inscription : septembre 2010
Messages : 7 101
Points : 8 466
Points : 8 466
tu peux utiliser filter_input aussi
__________________
http://blog.stealth35.com/
stealth35 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 08h40.


 
 
 
 
Partenaires

Hébergement Web