[PHP] Problème de session

Résolu
Blue project -  
 Blue project -
Bonjour,

Suite à une grosse prise de tête, j'aimerai bien savoir d'ou vien mon problème...

J'utilise PHP5 objet avec des Sessions pour garder en memoire des objets. Mais dès que je change de page, ces donnée se remette à zéro.

	require_once UTIL_PATH.'/sql.class.php';
	require_once CLASS_PATH.'/compte.class.php';

	session_start();

	// Instance de Sql
	if (!isset ($_SESSION['sql']))
		$_SESSION['sql'] = new Sql();

	// Instance de compte
	if(!isset ($_SESSION['compte']))
		$_SESSION['compte'] = new Compte();

	print_r($_SESSION['sql']);

La première fois, Sql est bien instancier, au changement de page, il passe #ressource ID 12 en 0 ? c'est la que je comprend plus.
Merci pour toute aide à ce sujet.

23 réponses

  • 1
  • 2
  1. Blue project
     
    Je vien de trouvé, pour ceux qui recherche, les données de type ressource ne peuvent pas être stocker dans des variable session chez 1&1, il faut utiliser un
    mysql_pconnect
    pour récuperer l'ancienne connection...

    Bon ce n'est pas tout mais j'ai encore pas mal de taf... maudit 1&1.
    1
  2. gigaga Messages postés 2347 Date d'inscription   Statut Membre Dernière intervention   301
     
    Vérifie que le répertoire des sessions sur le serveur existe bien et est accessible en écriture et lecture.
    Le répertoire est spécifié par la variable session.save_path dans le fichier the php.ini.
    0
  3. Blue project
     
    Les sessions marchent, car quand je fait $_SESSION['test'] = "toto"; et que je change de page, elle reste en mémoire.

    sa m'affiche sa la première fois
    Sql Object ( [conn:private] => Resource id #12 )

    puis
    Sql Object ( [conn:private] => 0 )
    la seconde fois et les suivante... là je planche serieux sur ce problème
    0
  4. lewis34 Messages postés 2557 Date d'inscription   Statut Membre Dernière intervention   352
     
    une reponse toute bete a tu bien mis ton session_start sur toute tes pages ?
    0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. gigaga Messages postés 2347 Date d'inscription   Statut Membre Dernière intervention   301
     
    Tu n'as pas loupé d'éventuels messages d'erreur? error_reporting(E_ALL);?
    0
  7. Blue project
     
    Malheuresement oui ... lol

    Peut être une info qui peut servir : Hebergement 1&1

    J'ai déjà renomer mes variables session et toujours rien.
    0
  8. gigaga Messages postés 2347 Date d'inscription   Statut Membre Dernière intervention   301
     
    En fait, je te conseillerai de serialiser ton objet avant de mettre en session :

    $_SESSION['sql'] = serialize(new Sql());

    et que tu récupère en déserialisant :

    print_r(unserialize($_SESSION['sql']));
    0
  9. lewis34 Messages postés 2557 Date d'inscription   Statut Membre Dernière intervention   352
     
    pour moi c'est qu'a partir d'un moment tu n'a plus de session (session_start absent ) regarde au niveau de tes includes.
    0
  10. Blue project
     
    J'ai test la serialisation mais sa ne vien pas de la, je perd même mon Sql lors de la première connexion au site.
    Sql Object ( [conn:private] => 0 )

    Sujet à s'arracher les cheveux...
    0
  11. Blue project
     
    je vien de test
    	require_once UTIL_PATH.'/sql.class.php';
    	require_once CLASS_PATH.'/compte.class.php';
    	session_start();
    
    	
    	// Instance de Sql
    	if (!isset ($_SESSION['test']))
    		$_SESSION['test'] = "toto";
    	
    	// Instance de Sql
    	if (!isset ($_SESSION['session_sql']))
    		$_SESSION['session_sql'] = new Sql();
    
    	// Instance de compte
    	if(!isset ($_SESSION['compte']))
    			$_SESSION['compte'] = new Compte();
    	
    	print_r($_SESSION['session_sql']);
    	echo "<br/>";
    	print_r($_SESSION['test']);
    


    print_r($_SESSION['test']); s'affiche bien
    mais print_r($_SESSION['session_sql']); toujours pas lors d'un changement, rechargement de page...
    0
  12. lewis34 Messages postés 2557 Date d'inscription   Statut Membre Dernière intervention   352
     
    j'en revien avec mon session start
    tu met

    require_once UTIL_PATH.'/sql.class.php';
    	require_once CLASS_PATH.'/compte.class.php';
    	session_start();

    essaye comme ca
    session_start();
    require_once UTIL_PATH.'/sql.class.php';
    	require_once CLASS_PATH.'/compte.class.php';
    
    
    0
  13. Blue project
     
    Même pas la peine de tester ce genre de chose, je vais me taper une erreur car php ne connait pas encore les classes pour lesquelle je tente de récupperer les informations (__PHP_Incomplete_Class Object ( [__PHP_Incomplete_Class_Name] => Sql [conn:private] => 0 )). Voila pour te le prouver ^^.

    J'ai tester de commenter tout le reste de mon code sauf cette partie et toujour rien.
    sa donne
    	require_once '/homepages/xx/xxxxxxxx/htdocs/xxxxx/utilitaire/sql.class.php';
    	session_start();
    	
    	if (!isset ($_SESSION['session_sql']))
    		$_SESSION['session_sql'] = new Sql();
    
    	print_r($_SESSION['session_sql']);
    

    Les xxx sont déclarer autrement => cf real_path()
    0
  14. lewis34 Messages postés 2557 Date d'inscription   Statut Membre Dernière intervention   352
     
    oula c'est pas banal ton pb..
    donc resumons tu appelle tes caless avec
    UTIL_PATH.'/sql.class.php' et CLASS_PATH.'/compte.class.php'

    et apres tu n'a plus de session si j'ai bien compris.

    c'est quoi exactement le script d'une de tes pages qui perd la session
    0
  15. Blue project
     
    Sur mon site j'ai adopter une arborescence assé pousser UTIL_PATH pour les classes utilitaire (celle qui n'ont pas besoin de connection à SQL sauf sql.class.php .
    Exemple mail.class.php qui vérifie synthaxe, validité de l'adresse mail )
    et CLASS_PATH pour les classes normales nécessitant une alteration de la BDD
    Le script étant ceux que j'ai déjà mis sur le ce site soit
    	require_once '/homepages/15/d283516940/htdocs/itolome/utilitaire/sql.class.php';
    	session_start();
    	
    	if (!isset ($_SESSION['session_sql']))
    		$_SESSION['session_sql'] = new Sql();
    
    	print_r($_SESSION['session_sql']);
    

    rien de plus, rien de moin.

    pour le fichier sql.class.php
    <?php
    class Sql{
    
    	private $conn;
    
    	/** Constructeur par défaut */
    	public function __construct(){
    		$this->conn = @mysql_connect(HOST, USER, PWD)
    			OR DIE ("Impossible de se connecter.");
    
    		@mysql_select_db (DB_NAME, $this->conn)
    			OR DIE ("Base innexistante.");
    	}
    	
    	/** Représentation toString de l'objet */
    	public function __toString(){ return "".$this->conn; }
    
    	/** Interroge la BDD */
    	public function query($requete){
    		$res = @mysql_query ($requete, $this->conn);
    			//OR DIE ("Une opération inconnu vien de se produire.");
    		return $res;
        }
    
        /** Retourne sous forme de tableau la requête */
        public function fetch_array($result){
    		$ret = @mysql_fetch_array($result, MYSQL_ASSOC)
    			OR DIE ("Une opération inconnu vien de se produire.");
    		return $ret;
        }
    
    	/** Retourne l'ID de la dernière insertion SQL */
    	public function get_insert_id(){
    		$ret = @mysql_insert_id($this->conn)
    			OR DIE ("Une opération inconnu vien de se produire.");
    		return $ret;
    	}
    
    	/** Renvoi le nombre de tuple de la requête */
    	public function get_num_rows($result){
    		$ret = @mysql_num_rows($result)
    			OR DIE ("Une opération inconnu vien de se produire.");
    		return $ret;
    	}
    }
    ?>
    

    Rien de plus simple...
    0
  16. lewis34 Messages postés 2557 Date d'inscription   Statut Membre Dernière intervention   352
     
    c'est pas le script de tes pages classes qu'il faut voir c'est celle des pages suivantes
    mais en tout etet de cause je vois que ton session_start est toujours apres ton require_once et que dans sql.class.php y'en a pas de demarrage de session..
    0
  17. Blue project
     
    J'ai essayé autre chose, mais toujour le même soucie.

    	$test = @mysql_connect(HOST, USER, PWD);
    	@mysql_select_db (DB_NAME, $test);
    	
    	if (!isset ($_SESSION['test_sql']))
    		$_SESSION['test_sql'] = $test;
    
    	print_r($_SESSION['test_sql']);
    

    affiche "Resource id #3" au premier appel de page
    affiche ensuite "0" ... sa vien du Sql mais pourquoi ?
    0
  18. lewis34 Messages postés 2557 Date d'inscription   Statut Membre Dernière intervention   352
     
    tu l'appelle comment ta page ?
    0
  19. Blue project
     
    http://www.xxxxxxxxx.fr/index.php

    dans l'index.php il y a juste require_once '_common.php';
    qui contient le script cité plus haut.

    le fichier s'appele _common.php
    0
  20. lewis34 Messages postés 2557 Date d'inscription   Statut Membre Dernière intervention   352
     
    et a tu mis un session_start ?
    0
  21. Blue project
     
    sa vient pas du session_start(); il est bien déclarer
    0
  • 1
  • 2