Précédent   Forum des professionnels en informatique > PHP > Langage
Langage Forum sur le langage PHP, la POO, les conventions, la sécurité, etc. Avant de poster : FAQ Langage, toutes les FAQ PHP, cours langage et sources PHP
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 26/08/2008, 15h40   #1
Futur Membre du Club
 
Inscription : décembre 2003
Messages : 86
Détails du profil
Informations forums :
Inscription : décembre 2003
Messages : 86
Points : 17
Points : 17
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 :
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 :
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'
beyo est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/08/2008, 15h57   #2
Expert Confirmé
 
Avatar de Eusebe
 
Inscription : mars 2006
Messages : 1 989
Détails du profil
Informations personnelles :
Âge : 34

Informations forums :
Inscription : mars 2006
Messages : 1 989
Points : 3 606
Points : 3 606
Bonjour,

$_POST contiens bien username et password ?

Est-ce que le login apparait juste après "On est en A" ?
Eusebe est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/08/2008, 17h33   #3
Futur Membre du Club
 
Inscription : décembre 2003
Messages : 86
Détails du profil
Informations forums :
Inscription : décembre 2003
Messages : 86
Points : 17
Points : 17
Citation:
$_POST contiens bien username et password ?
Citation:
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
beyo est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/08/2008, 23h02   #4
Futur Membre du Club
 
Inscription : décembre 2003
Messages : 86
Détails du profil
Informations forums :
Inscription : décembre 2003
Messages : 86
Points : 17
Points : 17
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 :
$username		= isset($_POST['username']) ? $_POST['username'] : 'une valeur';
et là j'ai à l'affichage :

Code :
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.
beyo est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/08/2008, 10h06   #5
Expert Confirmé
 
Avatar de Eusebe
 
Inscription : mars 2006
Messages : 1 989
Détails du profil
Informations personnelles :
Âge : 34

Informations forums :
Inscription : mars 2006
Messages : 1 989
Points : 3 606
Points : 3 606
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...
Eusebe est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/08/2008, 12h24   #6
Futur Membre du Club
 
Inscription : décembre 2003
Messages : 86
Détails du profil
Informations forums :
Inscription : décembre 2003
Messages : 86
Points : 17
Points : 17
Citation:
ç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...

Citation:
ç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
beyo est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/08/2008, 12h35   #7
Expert Confirmé
 
Avatar de Eusebe
 
Inscription : mars 2006
Messages : 1 989
Détails du profil
Informations personnelles :
Âge : 34

Informations forums :
Inscription : mars 2006
Messages : 1 989
Points : 3 606
Points : 3 606
Citation:
Envoyé par beyo Voir le message
oui, et c'est bien ça qui me rend dingue : en local ça fonctionne sans problème...



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
En prod, si tu fais un var_dump($username) après initialisation (et validation du formulaire), qu'est-ce que tu récupères ? (je vote pour une chaîne vide )
Eusebe 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 22h00.


 
 
 
 
Partenaires

Hébergement Web