Problème de session. Quelqu'un l'a déjà eu ?

Eléphanteau du PHP | 12 Messages

27 sept. 2010, 14:52

Bonjour,

Je recontre un problème au niveau des données de session et je voulais savoir si quelqu'un a déjà eu ce problème ou si quelqu'un aurait une idée de comment le régler :)

Explication simplifiée :
j'arrive sur le site avec un compteur à 0
je clique, ça passe à 1
je fais F5, ça passe à 2
je refais F5, ça passe à 1 (alors que ca devrait continuer de s'incrémenter)
ceci répété plusieurs fois, je me rends compte que par moment il y a des "rollbacks" de la session qui reprend ses anciennes valeurs

D'où cela peut-il venir ? Serveur web, plugins ajax, CMS ?

Merci d'avance,
Cordialement,
Gatt

ViPHP
xTG
ViPHP | 7331 Messages

27 sept. 2010, 16:17

A priori je dirai que ton code modifie la valeur d'une façon qu'il ne devrait pas.
Essayes sur un script vierge, une page avec juste la déclaration de session et l'incrémentation.

Et vérifies dans le php.ini la configuration pour la durée des sessions. La session est peut être détruite, mais je doute que la configuration soit mise sur 3secondes. :/

Eléphant du PHP | 314 Messages

27 sept. 2010, 16:21

Je te suggère de nous en dire un peu plus sur ton code, car le problème vient sans aucun doute ce dernier :)
Cordialement,
Julien - http://laravel.fr/

Eléphanteau du PHP | 12 Messages

27 sept. 2010, 16:50

Côté rafraichissement xajax

Code : Tout sélectionner

function debugSession () { $debug=''; foreach ($_SESSION["toto"] as $key => $value) { foreach ($_SESSION["toto"][$key] as $key2 => $value2) { $debug.=''.$key.' '.$key2.' : qt '.$_SESSION["toto"][$key][$key2][0].' code '.$_SESSION["toto"][$key][$key2][1].'<br />'; } } return $debug; } function RefreshTotoNew ($all) { $debug = 'avant <br />'.debugSession (); $args = explode ('_', $all); RefreshToto ($args[0], $args[1], $args[2] , $args[3]); $debug .= 'apres <br />'.debugSession (); $toto = new HTML_Toto('AJAX'); $Reponse = new xajaxResponse(); $Reponse->addAssign("toto","innerHTML",$toto->Get_HTML()); $Reponse->addAssign("debug_asp","innerHTML",$debug); return $Reponse; } function RefreshToto ($id1, $id2, $nom='' , $prenom='') { $req = new requete ('Ma requete'); $_SESSION["toto"][$id1][$id2][0] = (!isset($_SESSION["toto"][$id1][$id2][0])) ? 1 : ((int)$_SESSION["toto"][$id1][$id2][0])+1; $_SESSION["toto"][$id1][$id2][1] = $req->rows[0]['code']; $toto = new HTML_Toto('AJAX'); $Reponse = new xajaxResponse(); $Reponse->addAssign("toto","innerHTML",$toto->Get_HTML()); unset ($req); return $Reponse; }
Partie qui déclanche l'action xajax

Code : Tout sélectionner

<input type="image" alt="Ajouter à toto" onclick="xajax_RefreshTotoNew(document.getElementById('field').value);" value="Toto" id="Toto_Boutton" src="/templates/blabla.png" />
Lorsque je clique sur "Ajouter à toto", le debugSession affiche les bonnes données, mais quand je reclique plusieurs fois, ça reviens parfois en arrière.

Eléphant du PHP | 422 Messages

30 sept. 2010, 11:31

hello
tu va plus loin que 2 ?

++
toujours faire une recherche sur http://www.php.net et/ou sur http://www.google.fr :)
utiliser http://ideone.com/ pour vos codes :)