IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

Meilleure façon de traiter les données transmises par formulaire


Sujet :

Langage PHP

  1. #1
    Candidat au Club
    Inscrit en
    Février 2011
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Février 2011
    Messages : 6
    Points : 4
    Points
    4
    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 : 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
    }
    ?>
    2) Formulaire et traitement dans un deux fichiers distincts.
    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
    }
    ?>
    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');
    ?>
    3) Formulaire et traitement dans un deux fichiers distincts.
    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
    }
    ?>
    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{
    [...]
    }
    ?>
    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

  2. #2
    Membre éprouvé Avatar de vorace
    Homme Profil pro
    Développeur
    Inscrit en
    Août 2010
    Messages
    573
    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 : 573
    Points : 915
    Points
    915
    Par défaut
    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é.

  3. #3
    Expert éminent sénior

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Points : 10 727
    Points
    10 727
    Par défaut
    tu peux utiliser filter_input aussi

Discussions similaires

  1. Crypter les données transmises par un formulaire
    Par gwinyam dans le forum Général JavaScript
    Réponses: 7
    Dernier message: 07/12/2009, 21h51
  2. Réponses: 4
    Dernier message: 06/05/2008, 19h59
  3. recuperer les donnes proteger par administrateur
    Par sehing dans le forum Windows XP
    Réponses: 5
    Dernier message: 25/01/2006, 12h41
  4. Réponses: 5
    Dernier message: 27/12/2004, 00h38
  5. Réponses: 4
    Dernier message: 18/08/2003, 09h53

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo