JeuWeb - Crée ton jeu par navigateur
[Résolu] Bug session extrémement étrange. - Version imprimable

+- JeuWeb - Crée ton jeu par navigateur (https://jeuweb.org)
+-- Forum : Discussions, Aide, Ressources... (https://jeuweb.org/forumdisplay.php?fid=38)
+--- Forum : Programmation, infrastructure (https://jeuweb.org/forumdisplay.php?fid=51)
+--- Sujet : [Résolu] Bug session extrémement étrange. (/showthread.php?tid=2442)



[Résolu] Bug session extrémement étrange. - Studio Gamboo - 19-02-2008

Bonjour à tous,
Je viens vous demander de l'aide car je suis face à un problème très étrange, que j'ai du mal à définir.

Voila j'ai développée un petit framework que j'utilise pour créer des appli php.
Ce framework comprend un gestionnaire de session simplifié, qui se contente de renvoyer les valeurs du tableau de session via les fonctions "magiques" __set et __get.

Le problème que je rencontre, c'est que lorsque que j'incrémente une valeur en session de 1 , celle ci s'incrémente en fait d'une valeur aléatoire !
Ce qui rajoute à la bizzarerie, c'est que ce bug ne se produit pas sous ie !

Quelqu'un à une idée ?

Code :
    function index()
    {
        if(!$this->session->coucou) $this->session->coucou = 0;
        $this->session->coucou++;
    }
Voici la méthode test, et la variable coucou s'amuse à passer de 0 à 5, puis de 5 à 9, et ainsi de suite de façon aléatoire...


RE: Bug session extrémement étrange. - Galaan - 19-02-2008

Met un echo dans la fonction index() et regarde si par il n'y passe pas plusieurs fois.

Galaan


RE: Bug session extrémement étrange. - daroth - 19-02-2008

Est-on sur de passer au moins une fois dans l'index sans qu'une session existe?


RE: Bug session extrémement étrange. - Studio Gamboo - 19-02-2008

Il n'y passe évidemment qu'une seule fois.

J'ai fait également quelque test, comme mettre un objet en session, puis incrémenter une valeur de cette objet par une méthode interne.
La méthode n'était appelée qu'une fois mais la valeur toujours incrémentée de la même façon.

Daroth je ne pense pas avoir compris ta question :heuuu:

La méthode index la c'est la méthode par défaut de mon controlleur par défaut, c'est un peu comme mon index.html du site quoi ^^


RE: Bug session extrémement étrange. - Roworll - 19-02-2008

Essaye en utilisant une chaîne de caractères en plus de ta variable index.
Un truc du genre
Code PHP :
<?php 
$this
->session->coucou++;
$this->session->mystring.='-passage-';
Ca permettra au moins de vérifier que la string grandi en même temps que le nombre.
Si les deux sont synchros, c'est plus un problème d'appel (en gros, il passe plusieurs fois pour une raison encore inconnue)
Dans le cas contraire... Bah peut être que la variable numérique est modifiée ailleurs.


RE: Bug session extrémement étrange. - Studio Gamboo - 19-02-2008

Trés bonne remarque Rowroll je n'y avais pas pensé, merci !
Donc bah la chaine s'incrémente effectivement autant de fois que le nombre, c'est à dire 3,4 fois aléatoirement.
Donc c'est passé effectivemment plusieurs fois.
Est-ce possible que ce soit à cause des fonctions set et get ?

Je vous copie la partie de la classe Session en question :
Code :
    // --------------------------------------------------------------
    public function __set($key,$value) {
    // --------------------------------------------------------------
        $_SESSION[$key] = $value;
    }

    // --------------------------------------------------------------
    public function __get($key) {
    // --------------------------------------------------------------
        if(isset($_SESSION[$key])) return $_SESSION[$key];
        else return false;
    }



RE: Bug session extrémement étrange. - pascal - 19-02-2008

et en utilisant un traceur dans la méthode __set() ?

A+

Pascal


RE: Bug session extrémement étrange. - Studio Gamboo - 19-02-2008

Je viens de le faire et le traceur ne s'affiche que deux fois (lors de l'incrémentation du chiffre, et du string)

EDIT.
Petite précision, le bug n'a lieu que lorsque j'inclue ce fichier juste aprés :
Code :
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>

    <base href="<?= Core::$_core->config['base_url'] ?>" />
    <title><?= Core::$_core->config['base_name'] ?></title>
    <!-- Meta -->
    <meta http-equiv="content-type" content="application/xhtml+xml; charset=utf-8" />
    <meta name="robots" content="index, follow" />
    <meta name="author" content="www.studio-gamboo.com" />
    <!-- Favicon -->
    <link rel="shortcut icon" href="" />
    <!-- CSS -->
    <link rel="stylesheet" href="public/styles/style.css" type="text/css" media="screen, projection">
    <!-- JavaScript -->
    <script src="public/javascript/mootools.js" type="text/javascript"></script>
    
</head>

<body>

    <? $this->echo_r($this); ?>

</body>

</html>



RE: Bug session extrémement étrange. - Studio Gamboo - 19-02-2008

Ce bug est complétement idiot...
En fait c'est uniquement cette ligne la qui fait planter :
Code :
<link rel="shortcut icon" href="" />
Firefox doit faire une requête get la dessus, mon mod rewrite le redirige vers le controlleur par défaut, qui incrémente la session...
O_o