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 :

Du procédural à la POO


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    31
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 31
    Par défaut Du procédural à la POO
    Bonjour,

    Plus mon projet grossi, moins le code devient lisible. Après certains avis, j'ai décidé de me mettre à la POO.
    Je m'occupe dans un premier temps de l'inscription des membres, j'ai créer une page membre.class.php et inscription.php


    class.Membre.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
    29
    30
    31
    32
    33
    34
    35
    36
    37
    <?php 
     
    class Membre{
    	protected $pseudo;
    	protected $motdepasse;
    	protected $confirmationmotdepasse;
    	protected $email;
    	protected $confirmationemail;
    	protected $jours;
    	protected $mois;
    	protected $annee;
    	protected $datedenaissance;
    	protected $sexe;
    	protected $statut = 0;
    	protected $codedeconfirmation;
    	protected $captcha;
    	protected $photo_profil = "default.png";
     
    	function __construct ($_POST['sexe'], $_POST['jours'], $_POST['mois'], $_POST['annee'], $_POST['pseudo'], $_POST['mot_de_passe'], $_POST['confirmation_mot_de_passe'], $_POST['email'], $_POST['confirmation_email'], $_POST['captcha']){
    		$this->sexe = secu_bdd($_POST['sexe']);
    		$this->jours = secu_bdd($_POST['jours']);
    		$this->mois = secu_bdd($_POST['mois']);
    		$this->annee = secu_bdd($_POST['annee']);			
    		$this->pseudo = secu_bdd($_POST['pseudo');
    		$this->motdepasse = secu_bdd($_POST['mot_de_passe']);
    		$this->confirmationmotdepasse = secu_bdd($_POST['confirmation_mot_de_passe']);
    		$this->email = secu_bdd($_POST['email']);
    		$this->confirmationemail = secu_bdd($_POST['confirmation_email']);
    		$this->captcha = secu_bdd($_POST['captcha']);
    	}
     
    	public function membre_inscription(membre $pseudo, $motdepasse, $email, $datedenaissance, $sexe){
     
    	}
    }
     
    ?>
    inscription.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
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    <?php 
    session_start();
    $nom_page = "Inscription";
    include_once("squelette/head.php"); 
    include_once("script/bdd.php");
    include_once("class/Membre.class.php");
    require_once('script/js/xAjax/xajax_core/xajax.inc.php');
     
    if(isset($_POST['submit'])){
    	try{
    	$membre = new Membre($_POST['sexe'], $_POST['jours'], $_POST['mois'], $_POST['annee'], $_POST['pseudo'], $_POST['mot_de_passe'], $_POST['confirmation_mot_de_passe'], $_POST['email'], $_POST['confirmation_email'], $_POST['captcha']);
    	$membre->membre_inscription();
    	}
    	catch(Execption $bug){
    		echo $bug->getMessage();
    	}
     
    }
    ?>
     
    <div id="gauche">
    <p>
    	<form method="POST">
    		<fieldset style="border-width:1px;">
     
    			<legend class="sous_titre_orange">Informations personnelles : </legend>
     
    			<label for="sexe">Je suis : </label>
    			<input type="radio" name="sexe" value="homme" <?php echo (!empty($_POST['sexe']) AND ($_POST['sexe'] === "homme")) ? "chercked=checked" : "" ?>  /> un homme
    			<input type="radio" name="sexe" value="femme" <?php echo (!empty($_POST['sexe']) AND ($_POST['sexe'] === "femme")) ? "chercked=checked" : "" ?> /> une femme 
    			<br />
    			<br />
     
    			<label>Date de naissance :</label>
     
    			<select name="jours">
    				<?php echo (!empty($erreur) AND ($_POST['jours']  !== "0")) ? "<option value='".$_POST["jours"]."'>".$_POST["jours"]."</option>" : "<option value='0'>Jours</option>";
     
     
    				for($jours = 0;$jours <= 31; $jours++){
    					echo "<option value='".$jours."'>".$jours."</option>";				
    				} ?>
     
    			</select>
     
    			/
     
    			<select name="mois">
     
    				<?php echo (!empty($erreur) AND ($_POST['mois']  !== "0")) ? "<option value='".$_POST["mois"]."'>".$_POST["mois"]."</option>" : "<option value='0'>Mois</option>";
     
     
    				for($mois = 0; $mois <= 12; $mois++){
    					echo "<option value='".$mois."'>".$mois."</option>";	
    				} ?>
     
    			</select>
     
    			/
     
    			<select name="annee">
     
    				<?php echo (!empty($erreur) AND ($_POST['annee']  !== "0")) ? "<option value='".$_POST["annee"]."'>".$_POST["annee"]."</option>" : "<option value='0'>Année</option>";
     
     
    				for($annee = 1930; $annee <= date('Y')-14; $annee++){
    					echo "<option value='".$annee."'>".$annee."</option>";
    				} ?>
     
    			</select>
    		</fieldset><br />
    		<fieldset style="border-width:1px;">					
     
    			<legend  class="sous_titre_orange">Informations du profil :</legend>					
     
    			<label for="pseudo">Pseudo :</label> <input id="input"  type="text" name="pseudo" value="<?php if(!empty($erreur)){ echo $_POST['pseudo']; } ?>" /><br />
     
    			<label for="mot_de_passe">Mot de passe :</label> <input id="input"  type="password" name="mot_de_passe" value="<?php if(!empty($erreur)){ echo $_POST['mot_de_passe']; } ?>" /><br />
     
    			<label for="confirmation_mot_de_passe">Confirmation du mot de passe : </label><input id="input"  type="password" name="confirmation_mot_de_passe" value="<?php if(!empty($erreur)){ echo $_POST['confirmation_mot_de_passe']; } ?>" /><br />
     
    			<label for="email">Adresse email :</label> <input id="input"  type="text" name="email" value="<?php if(!empty($erreur)){ echo $_POST['email']; } ?>" /><br />
     
    			<label for="confirmation_email">Confirmation de l'adresse email : </label><input id="input"  type="text" name="confirmation_email" value="<?php if(!empty($erreur)){ echo $_POST['confirmation_email']; } ?>" /><br />
     
    			<label for="captcha">Recopier le code : <img src="script/captcha.php" /> </label><input id="input"  type="text" name="captcha" />
    		</fieldset><br />
    		<input id="input"  type="submit" name="envoyer" value="Envoyer" />
     
    	</form>
    </p>	
    </div>
     
    <?php include_once("squelette/foot.php");
    ?>

    Soyez, indulgent je débute à peine en POO.


    J'ai remarqué que la function __construct masquait le formulaire. Comme si une erreur fatal mettait fin à l'exécution du code.
    Je souhaite avoir des avis sur ce début de code, des conseils et surtout des réponses au sujet de ce problème.

    Merci.

  2. #2
    Membre émérite

    Profil pro
    Inscrit en
    Juin 2004
    Messages
    772
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Juin 2004
    Messages : 772
    Par défaut
    Je vois une première erreur de conception.

    Le constructeur de ta classe Membre prend des données $_POST en paramètres => tu ne peux pas référencer des variables globales en paramètres.

    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
    29
    30
    31
    32
    33
    34
    35
    <?php 
     
    class Membre{
    	protected $pseudo;
    	protected $motdepasse;
    	protected $confirmationmotdepasse;
    	protected $email;
    	protected $confirmationemail;
    	protected $jours;
    	protected $mois;
    	protected $annee;
    	protected $datedenaissance;
    	protected $sexe;
    	protected $statut = 0;
    	protected $codedeconfirmation;
    	protected $captcha;
    	protected $photo_profil = "default.png";
     
    	function __construct ($sexe, $jours, $mois, $annee, $pseudo, $mot_de_passe, $confirmation_mot_de_passe, $email, $confirmation_email, $captcha){
    		$this->sexe = secu_bdd($sexe);
    		$this->jours = secu_bdd($jours);
    		$this->mois = secu_bdd($mois);
    		$this->annee = secu_bdd($annee);			
    		$this->pseudo = secu_bdd($pseudo);
    		$this->motdepasse = secu_bdd($mot_de_passe);
    		$this->confirmationmotdepasse = secu_bdd($confirmation_mot_de_passe);
    		$this->email = secu_bdd($email);
    		$this->confirmationemail = secu_bdd($confirmation_email);
    		$this->captcha = secu_bdd($captcha);
    	}
     
    	public function membre_inscription(membre $pseudo, $motdepasse, $email, $datedenaissance, $sexe){
     
    	}
    }

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    31
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 31
    Par défaut
    Merci, cependant mon problème persiste toujours. Tant que la fonction construct est présente dans la classe Membre, la page inscription crash et ne m'affiche pas le formulaire.

    J'ai tenté des try/catch sans trop savoir si ça allait fonctionné, aucun erreur n'est ressortie...

  4. #4
    Membre Expert
    Avatar de Eric2a
    Homme Profil pro
    Technicien
    Inscrit en
    Septembre 2005
    Messages
    1 225
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Corse (Corse)

    Informations professionnelles :
    Activité : Technicien

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 225
    Par défaut
    Salut,

    Peut-être la faute d'orthographe dans inscription.php
    au lieu de
    ?

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    31
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 31
    Par défaut
    J'ai réglé mon problème de cette façon.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    	function __construct ($sexe, $jours, $mois, $annee, $pseudo, $motdepasse, $confirmationmotdepasse, $email, $confirmationemail, $captcha){
    		$this->sexe = $sexe;
    		$this->jours = $jours;
    		$this->mois = $mois;
    		$this->annee = $annee;			
    		$this->pseudo = $annee;
    		$this->motdepasse = $motdepasse;
    		$this->confirmationmotdepasse = $confirmationmotdepasse;
    		$this->email = $email;
    		$this->confirmationemail = $confirmationemail;
    		$this->captcha = $captcha;
    	}
    Ca marche nettement mieux :p

  6. #6
    Membre émérite

    Profil pro
    Inscrit en
    Juin 2004
    Messages
    772
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Juin 2004
    Messages : 772
    Par défaut
    Pense quand même à te protéger des injections sql, pas dans le constructeur mais au moment d'insérer en base !

    Tu peux cliquer sur "Résolu" maintenant

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Passer du procédural à la POO
    Par MonsieurPoulet dans le forum Langage
    Réponses: 7
    Dernier message: 19/09/2013, 10h18
  2. [POO] Différence entre POO et procédural
    Par Golork dans le forum Langage
    Réponses: 17
    Dernier message: 16/12/2008, 17h06
  3. [POO] PHP langage de programmation procédural ?
    Par elikakoun dans le forum Langage
    Réponses: 2
    Dernier message: 29/05/2007, 17h49
  4. procédures de listes en POO
    Par num_a dans le forum Delphi
    Réponses: 5
    Dernier message: 19/04/2007, 10h47

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