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
2) Formulaire et traitement dans un deux fichiers distincts.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 } ?>
Le fichier de traitement ne sert qu'a ce formulaire :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 } ?>3) Formulaire et traitement dans un deux fichiers distincts.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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'); ?>
Le fichier de traitement peut servir a traiter d'autres actions similaires (formulaires) :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 } ?>Conclusion
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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{ [...] } ?>
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![]()
Partager