[POO] Variables de sessions dans les objets

Répondre
rosema
le 23/02/2005 à 15:22
rosema
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
LA GLOBULE
le 23/02/2005 à 15:25
LA GLOBULE
A quoi te servent ces variables ?

Tu ne chercherais pas par hasard à faire "persister" tes objets entre chaque page ?
rosema
le 23/02/2005 à 15:37
rosema
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
Rex
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
rosema
le 23/02/2005 à 15:52
rosema
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
rosema
le 24/02/2005 à 10:13
rosema
<?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
keitarosan
le 24/02/2005 à 11:10
keitarosan
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 <<
Rex
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 smiley
Un hamster dit : J'ai dressé le scientifique, quand j'appuie sur le bouton, il me donne des graines
zebden
le 24/02/2005 à 12:33
zebden
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
keitarosan
le 24/02/2005 à 13:17
keitarosan
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 <<
Répondre
LoadingChargement en cours