crazykamel
Messages postés103Date d'inscriptionjeudi 16 juin 2005StatutMembreDernière intervention30 avril 2007 13 juil. 2005 à 10:47
Notice: main() [[function.main function.main]]: The script
tried to execute a method or access a property of an incomplete object. Please
ensure that the class definition "BDMembres" of the object you are trying to
operate on was loaded _before_ unserialize() gets called or provide a
__autoload() function to load the class definition in
d:\kalisport\KaliNet\site\espace_membre\infos_perso.php on line
29
if (!$result = $GLOBALS['_hBD']->executerRequeteRes($req)) {
echo 'Aucun membre chargé pour S' . $this->_id_membre .'
';
return false;
}
foreach ($result as $row) {
$this->_TOMembres [$row['id_membre']] = new
BDMembres($row['id_membre'],$row['nom'],$row['prenom'],$row['sexe'],$row['naissance'],$row['cp'],$row['mail'],$row['mdp'],$row['url'],$row['infos_comp'],$row['url'],$row['tel']);
}
return true;
}
public function authentifier($mail, $mdp){
foreach ($this->_TOMembres as $OMembre) {
if
($OMembre->_mail $mail and $OMembre->_mdp $mdp) return
$OMembre;
cs_garfield90
Messages postés388Date d'inscriptionlundi 7 juillet 2003StatutWebmasterDernière intervention10 février 2009 13 juil. 2005 à 11:00
Salut,
connais tu la POO, car moi en tant qu'interpreteur PHP je capte
propriétés :
$_proprietes[0] = '_TOMembres';
$_proprietes[1] = '_dataOK';
méthodes :
__construct()
chargerAllMembres()
authentifier($mail, $mdp);
de plus dans ta methode authentifier, tu utilises $OMembre->_mail, essaye avec ca mais je ne garantis rien
Au fait as tu testé tes différentes méthodes, je ne suis pas sur que ca marche.
Si tout marche, je voudrais bien que tu m'expliques comment t'as fait
car, je pense comprendre ton idée mais je vois pas comment ca marche
dans le cas présent
"They are 10 sorts of persons whose understand binary and whose not"
Vous n’avez pas trouvé la réponse que vous recherchez ?
malalam
Messages postés10839Date d'inscriptionlundi 24 février 2003StatutMembreDernière intervention 2 mars 201025 13 juil. 2005 à 11:26
Hello,
ouais, plusieurs problemes la.
En effet tes variables membres ne sont pas correctes. De plus, ton
$proprietes est prive, et ne peut donc pas etre accede a l'exterieur de
ta classe.
Tu dois declarer au moins public ce membre :
public $TOMembres;
Apres dans ton constructeur, tu peux mettre ca :
$this->_TOmembres = array();
et acceder a _TOmembres a l'exterieur de ta classe.
Ensuite quand tu utilises ca :
$GLOBALS['_hBD']->executerRequeteRes($req)
$GLOBALS['_hBD'], c'est quoi ? C'est bien un objet declare...? Ou ? Quand ?
Ensuite, tu fais de _TOmembres un tableau indice avec l'id d'un
utilisateur, contenant un objet avec des proprietes que l'on ne connait
pas.
Mettons que BDmembre aient une propriete : public $email dans lequel tu
mets le resultat de $row['email'], tu y accederas, si tu veux passer
par cette classe, ainsi :
crazykamel
Messages postés103Date d'inscriptionjeudi 16 juin 2005StatutMembreDernière intervention30 avril 2007 13 juil. 2005 à 14:49
Je suis obligé de me servir de ces classes car on est plusieurs à s'en
servir. Par contre ce qui est chiant, c'est d'avoir à recoder un espace
membre fonctionnel en objet...
Alors je vais vous mettre les classes dont je me sers.
//ClassAllMembres
<?php
require_once('BDmembres.php');
class ClassAllMembres {
public $_proprietes = array('_TOMembres','_dataOK'); //Je l'ai passé en public comme demandé
public function __construct() {
$this->_TOmembres = array();
$this->_dataOK = $this->chargerAllMembres();
}
public function chargerAllMembres() {
$req = 'SELECT * FROM membres';
if (!$result = $GLOBALS['_hBD']->executerRequeteRes($req)) {
echo 'Aucun membre chargé
';
return false;
}
foreach ($result as $row) {
$this->_TOMembres [$row['membreID']] = new
BDMembres($row['membreID'],$row['nom'],$row['prenom'],$row['sexe'],$row['naissance'],$row['cp'],$row['mail'],$row['mdp'],$row['url'],$row['infos_comp'],$row['tel']);
}
return true;
}
public function authentifier($mail, $mdp){
foreach ($this->_TOMembres as $OMembre) {
if
($OMembre->_mail $mail and $OMembre->_mdp $mdp) return
$OMembre;
if ($membreID == DUMMY_INT or
$nom DUMMY_INT or $prenom DUMMY_INT or $sexe == DUMMY_INT or
$naissance DUMMY_INT or $cp DUMMY_INT or $mail == DUMMY_INT or
$mdp DUMMY_INT or $url DUMMY_INT or $infos_comp == DUMMY_INT or
$tel == DUMMY_INT) {
if ($membreID == DUMMY_INT) {
echo 'membreID non renseigné dans
la construction de la classe BDMembres
';
}
if ($nom == DUMMY_INT) {
echo 'nom non renseigné dans la
construction de la classe BDMembres
';
}
if ($prenom == DUMMY_INT) {
echo 'prenom non renseigné dans
la construction de la classe BDMembres
';
}
if ($sexe == DUMMY_INT) {
echo 'sexe non renseigné dans la
construction de la classe BDMembres
';
}
if ($membreID == DUMMY_INT) {
echo 'naissance non renseigné
dans la construction de la classe BDMembres
';
}
if ($cp == DUMMY_INT) {
echo 'membreID non renseigné dans
la construction de la classe BDMembres
';
}
if ($mail == DUMMY_INT) {
echo 'membreID non renseigné dans
la construction de la classe BDMembres
';
}
if ($mdp == DUMMY_INT) {
echo 'membreID non renseigné dans
la construction de la classe BDMembres
';
}
if ($url == DUMMY_INT) {
echo 'membreID non renseigné dans
la construction de la classe BDMembres
';
}
if ($infos_comp == DUMMY_INT) {
echo 'membreID non renseigné dans
la construction de la classe BDMembres
';
}
if ($tel == DUMMY_INT) {
echo 'membreID non renseigné dans
la construction de la classe BDMembres
';
}
throw new Exception();
}
$this->_TOmembres = array(); //rajouté comme conseill
$this->_membreID = $membreID;
$this->_nom = $nom;
$this->_prenom = $prenom;
$this->_sexe = $sexe;
$this->_naissance = $naissance;
$this->_cp = $cp;
$this->_mail = $mail;
$this->_mdp = $mdp;
$this->_url = $url;
$this->_infos_comp = $infos_comp;
$this->_tel = $tel;
}
public function __set($nom, $valeur ) {
if (!in_array($nom,$this->_proprietes,true)) {
echo 'propriete ' .$nom .' INCONNUE pour objet Membres
';
throw new Exception();
}
$this->_proprietes[$nom] = $valeur;
}
public function __get($nom) {
if (!in_array($nom,$this->_proprietes,true)) {
echo 'propriete ' .$nom .' INCONNUE pour objet Membres
';
throw new Exception();
}
return $this->_proprietes[$nom];
}
}
?>
////////////////////
$GLOBALS['_hBD'] c'est un objet de connexion à la base
Voilà comment je gère la connexion d'un membre
$GLOBALS['_hBD'] = new ClassBD();
$OAllmembres = new ClassAllMembres();
if (!$OMembre = $OAllmembres->authentifier($mail,$mdp)) {
echo
"
<center>Erreur
cet email (et/ou mot de passe) est
incorrect!</center>
";
}
else {
//connexion établie
//-------------Cookies-----------------
setcookie('mail', $mail, time()+2592000); //délai d'un mois
setcookie('mdp', $mdp, time()+2592000);
//-------------Session-----------------
$_SESSION['OMembre']= $OMembre;//je m'en sers comme variable de session, comme ça je peux (je voudrais) accéder à ses propriétés
header('Location: espace_membre.php?page=3');//redirection page membre