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 :

Classe PHP5 et passage de paramètre


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Décembre 2003
    Messages
    125
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Décembre 2003
    Messages : 125
    Par défaut Classe PHP5 et passage de paramètre
    Bonjour, je débute sous PHP5 (ça se voit dans mon code), mais j'ai un souci au niveau d'un de mes scripts.

    J'ai un script qui ressemble un peu à celui de la faq
    Les objets font-ils bon ménage avec les sessions en PHP 5 ?

    c'est un formulaire avec login et mot de passe (j'ai enlevé toutes les autres fonctions pour plus de clarté dans ma demande)

    En local, sous Wamp (php 5.26) mon script fonctionne mais sous environnement de prod (php 5.16), les variables ne semblent pas transmises.

    Voici mes scripts:

    la classe class.login.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
    class Login
    {
     private $sUsername;
     private $sPassword;
     
     public function __construct($login, $mdp)
     {
      $this->sUsername = $login;
      $this->sPassword = $mdp;
    $msg = "On est en A<br />";
    $msg .= "login:".$login."<br />";
      if ( $this->sUsername != "" && $this->sPassword != "")
      {
    $msg .= "On est en B<br />";
      }
      else
      {
       $msg			.= '
    	<form method="post" action="'.$_SERVER['PHP_SELF'].'" id="logmdp">
    	<fieldset>
    	<p><label for="username">Utilisateur : </label>
    	<input type="text" id="username" name="username" value="'.$this->sUsername.'" /></p>
    	<p><label for="password">Mot de passe:</label>
    	<input type="password" id="password" name="password" value="'.$this->sPassword.'" /></p>
    	<p style="text-align:right;"><input type="submit" value="Identifiez-vous" style="position:relative;width:100%" /></p>
    	</fieldset>
    	</form>';
      }
      echo $msg;
     }
    }
    et la page d'appel :
    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
    <?php
    include_once('class.login.php');
    session_start();
     
    $username		= isset($_POST['username']) ? $_POST['username'] : '';
    $password		= isset($_POST['password']) ? $_POST['password'] : '';
    ?>
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
    <html><head>
     <title>Authentification</title>
     <meta http-equiv="Content-Language" content="fr" />
     <meta http-equiv="Content-Type" content="text/html; charset=windows-1252" />
     <meta http-equiv="cache-control" content="no-cache, must-revalidate" />
     <meta http-equiv="Pragma" content="no-cache" />
     <link rel="stylesheet" type="text/css" href="../script/css/admin.css" />
     <link rel="stylesheet" type="text/css" href="../script/css/admin_ie.css" />
     <meta http-equiv="expires" content="Mon, 26 Jul 1997 05:00:00 GMT" />
    </head>
    <body>
     <div id="corpsForm">
    <?php
    var_dump($_POST);
    var_dump($_SESSION);
    $formulaire 	= new Login($username, $password);
    ?>
    </div>
    </body></html>
    Je n'arrive pas à comprendre d'où vient ce problème
    Je ne passe jamais à 'On est en B'

  2. #2
    Membre Expert
    Avatar de Eusebe
    Inscrit en
    Mars 2006
    Messages
    1 992
    Détails du profil
    Informations personnelles :
    Âge : 47

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 992
    Par défaut
    Bonjour,

    $_POST contiens bien username et password ?

    Est-ce que le login apparait juste après "On est en A" ?

  3. #3
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Décembre 2003
    Messages
    125
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Décembre 2003
    Messages : 125
    Par défaut
    $_POST contiens bien username et password ?
    Est-ce que le login apparait juste après "On est en A" ?
    Avant envoi :
    var_dump($_POST) affiche
    array(0) { }
    le message est : On est en A

    Après envoi (login et mot de passe remplis) :
    var_dump($_POST) affiche
    array(2) { ["username"]=> string(5) "aaaaa" ["password"]=> string(5) "aaaaa" }
    le message est : On est en A

  4. #4
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Décembre 2003
    Messages
    125
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Décembre 2003
    Messages : 125
    Par défaut
    Ce qui m'étonne c'est que outre le fait que les paramètre soient bien passés en POST, ils ne sont pas passé au constructeur :

    J'ai testé le remplacement de la valeur par défaut vide avec

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $username		= isset($_POST['username']) ? $_POST['username'] : 'une valeur';
    et là j'ai à l'affichage :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    On est en A
    login: une valeur
    On est en B
    Ce qui fait comme si le constructeur voyait le $_POST comme non défini et prenait toujours la valeur par défaut, ce que je trouve abbérant puisque la valeur est bien affichée dans le var_dump($_POST)

    C'est sûrement dû à mon manque de compréhension du fonctionnement des constructeur de classe en php , alors j'aimerais bien comprendre le pourquoi de ce problème.

    Merci d'avance.

  5. #5
    Membre Expert
    Avatar de Eusebe
    Inscrit en
    Mars 2006
    Messages
    1 992
    Détails du profil
    Informations personnelles :
    Âge : 47

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 992
    Par défaut
    Si j'ai bien compris, ça ne viens pas de ton constructeur, mais de l'initialisation de ta variable $username (et peut-être $password).

    Et ça ne viens pas non plus du code que tu nous as donné : je l'ai testé tel quel chez moi (copier / coller), et il fonctionne...

  6. #6
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Décembre 2003
    Messages
    125
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Décembre 2003
    Messages : 125
    Par défaut
    ça ne viens pas non plus du code que tu nous as donné : je l'ai testé tel quel chez moi (copier / coller), et il fonctionne...
    oui, et c'est bien ça qui me rend dingue : en local ça fonctionne sans problème...

    ça ne viens pas de ton constructeur, mais de l'initialisation de ta variable $username (et peut-être $password).
    et donc ? j'ai mis tout le code. Je pense avoir fait une initialisation convenable de mes variables...

    Le fait que ça fonctionne en local, (et pas seulement chez moi donc puisque tu l'as testé) peut laisser voir comme possibilité une différence au niveau du php.ini

    En prod, j'ai PHP Version 5.1.6
    mais quelle paramètre(s) en particulier vérifier pour ce problème ?

    En prod j'ai :

    safe_mode On
    Apache/2.2.6 (Fedora)
    Session Support enabled
    session.auto_start Off

Discussions similaires

  1. Réponses: 2
    Dernier message: 20/05/2011, 09h51
  2. [Débutant]Construction de classe, passage de paramètres
    Par Isildur dans le forum VB 6 et antérieur
    Réponses: 1
    Dernier message: 06/02/2009, 19h43
  3. Problème de passage de paramètre non scalaire (classe)
    Par eljoedaz dans le forum Web & réseau
    Réponses: 1
    Dernier message: 24/09/2007, 16h52
  4. Réponses: 1
    Dernier message: 14/04/2007, 15h17
  5. Passage de paramètre d'une classe à une autre
    Par semenzato dans le forum C++
    Réponses: 3
    Dernier message: 21/09/2005, 13h59

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