[POO] Variables de sessions dans les objets
J'ai un petit problème, c'est que les variables de session que je crée dynamiquement par les methodes de mes objets ne semblent pas perdurer avec le rechargement des pages...
Quelqu'un sait il pourquoi?
c 'est incroyable ce que je peux écrire comme conneries
A quoi te servent ces variables ?
Tu ne chercherais pas par hasard à faire "persister" tes objets entre chaque page ?
Non, non,
En fait c'est une classe(eh oui maintenant j'arrète plus) de recherche d'entrée sql qui permet notamment d'enregister les reésulats dans les varibles de session.
Plus clairement, l'utilisateur se connecte, il envoi les $_POST à ma classe qui reherche dans la base son login et pass et eventuellement enregistre le reste des varibales(photo, adresse mail, ...) dans la session.
Les variables de session sont donc déclarées dans ma méthode et je pense que c'est ça qui les empèche de perdurer.
c 'est incroyable ce que je peux écrire comme conneries
le 23/02/2005 à 15:46
Rex
"déclarées dans ma méthode" ?
J'espère que tu n'utilises pas session_register ???
Un hamster dit : J'ai dressé le scientifique, quand j'appuie sur le bouton, il me donne des graines
non, non cher ami rassure toi je les déclare en bon et due forme comme le préconise le manuel. T'as pas une idée de ce qu'il faudrait que je fasse?
c 'est incroyable ce que je peux écrire comme conneries
<?php
class action_mysql{
function action_mysql(){
$this->comparaison_ok = true;
$this->insertok = true;
}
function insertion($table, $champs_forces, $session = false, $cookie = true){
$this->champs_forces = $champs_forces;
$nb = count($this->champs_forces);
while (list($this->Intitule, $this->Valeur) = each($this->champs_forces)){
$this->liste .= $this->Intitule;
$this->values .= $this->Valeur;
if($nb >1){$this->liste .= ', ';$this->values .= ', ';$nb = $nb-1;}
}
$this->requete = 'INSERT INTO '.$table.' ('.$this->liste.') VALUES ('.$this->values.')';
mysql_query($this->requete) or die ('Erreur:'.mysql_error().$this->requete);
return $this->insertok;
}
function recherche_entree($table, $valeurs, $session = false, $cookie = false){
$this->valeur_comp = $valeurs;
$this->requete = "SELECT * FROM $table WHERE ";
reset($this->valeur_comp);
$nb = count($valeurs);
while (list($this->Intitule, $this->Valeur) = each($this->valeur_comp)){
$this->requete .= $this->Intitule.' = "'.$this->Valeur.'"';
if($nb >1){ $this->requete .= ' AND ';$nb = $nb-1;}
}
$result = mysql_query($this->requete) or die ('Erreur:'.mysql_error().$this->requete);
if(mysql_affected_rows()==1){
$this->valeur_comp = mysql_fetch_array($result)or die ('Erreur:'.mysql_error().$this->requete);
reset($this->valeur_comp);
while (list($this->Intitule, $this->Valeur) = each($this->valeur_comp)){
if($session = true){$_SESSION[$this->Intitule]= $this->Valeur;}
if($cookie = true){setcookie($this->Intitule, $this->Valeur,time()+3600);}
}
return $this->comparaison_ok;
}
else{$this->comparaison_ok = false; return $this->comparaison_ok;}
//elseif(mysql_affected_rows()>1){$this->comparaison_ok = false; return $this->comparaison_ok;}
}
}
?>
Je comprend vraiement pas!!
c 'est incroyable ce que je peux écrire comme conneries
tu as bien un "session_start();" sur toute les pages qui appellent cette classe ? (et tout en haut de préférence ?)
Ensuite, si tu travailles en local, et sous windows, selon la config, il peut pas sauvegarder les sessions ^^
>> http://projectopensource.free.fr/index.php?m=2&m2=5&s=8 <<
le 24/02/2005 à 11:48
Rex
ATTENTION : La déclaration de la classe doit obligatoirement être faite avant d'appeler le session_start.
Sur le code, je dirais rien, tu risquerais de mal le prendre
Un hamster dit : J'ai dressé le scientifique, quand j'appuie sur le bouton, il me donne des graines
ATTENTION : La déclaration de la classe doit obligatoirement être faite avant d'appeler le session_start.
Je déclare toujours avant mon session_start() (toujours au depart de toute facon) et ensuite mes class.
Pour le code , pareil, mais c'est en forgeant qu'on devient forgeron !
zebdinou pour les intimes / Blog : http://www.zebden.fr
faut lui laisser ca, la personne commence a programmer en classes :)
J'en connais pas beaucoup qui font cet effort la ;)
Et je pense que si les remarques sont constructive, ca ne gene pas ^^
Question: Pourquoi déclarer les classes avant le "session_start()" ?
J'ai toujours mis le session_start() en haut de ma page index.php (qui est la seule page visible de mon site), avec des dizaine d'include dedans.il serait assez difficile de mettre le session_start() apres la déclarations des classes ^^.
Ou alors t'as fait une faute de frappe ;), et tu voulais dire avant :)
>> http://projectopensource.free.fr/index.php?m=2&m2=5&s=8 <<