[RESOLU] Sessions aléatoires

Mammouth du PHP | 2278 Messages

18 déc. 2012, 10:54

Bjr,
J'ai une application dont le
script1.php ouvre une session par session_start()
script2.php stocke des valeurs dans la session ;
session_start();
$_SESSION['qqch']="texte";
etc.
stockage effectif vérifié;
les scripts suivants font session_start();etc; et certaines fois voient une session vide, d'autres fois voient les valeurs stockées. Précision: il n'y a pas de délai entre les exécutions des différents scripts qui s'appellent l'un l'autre.
Comme une partie des valeurs sert à vérifier que l'utilisateur a le droit de se trouver là (comparaison entre un code stocké dans la session et un code passé par post), je vois mal comment contourner le problème.

phpinfo():
PHP Version 5.3.3-7+squeeze14
This server is protected with the Suhosin Patch 0.9.9.1

J'ai lu les valeurs pour session dans phpinfo(), mais je ne vois rien.
Vanitas vanitatum et omnia vanitas
Mes derniers livres :
Sauvez les Mots chez BoD,
Tous les chemins mènent à ROM chez BoD

ViPHP
xTG
ViPHP | 7331 Messages

18 déc. 2012, 11:39

Rajoutes un délai entre chaque script histoire de voir si cela ne vient pas d'un problème d'accès à un fichier utilisé.
S'il n'arrive pas à lire le fichier de session il doit en créer une autre du coup.

Mammouth du PHP | 2278 Messages

18 déc. 2012, 11:55

J'avais pensé aux délais, mais en sens contraire....
Il me semble que ça vient aussi de la façon dont le script initial est démarré: suivant que tu l'appelles par son URL ou en rafraichissant, tu n'as pas le même comportement.
Vanitas vanitatum et omnia vanitas
Mes derniers livres :
Sauvez les Mots chez BoD,
Tous les chemins mènent à ROM chez BoD

ViPHP
xTG
ViPHP | 7331 Messages

18 déc. 2012, 14:49

suivant que tu l'appelles par son URL ou en rafraichissant, tu n'as pas le même comportement.
:shock:

Hormi quand ton navigateur te ressort une page de son cache, mais j'espère bien que côté serveur il se passe la même chose. :P

Mammouth du PHP | 2278 Messages

19 déc. 2012, 11:47

J'ai rajouté en vain sleep(10); comme première instruction du script appelé récalcitrant;
le problème est que
s1 crée la session
s2 la remplit
s3 ne voit rien
mais j'ai trouvé ici : http://www.phpsources.org/tutoriel-SESSIONS.htm
qu'l fallait créer la session avant toute chose, ce qui a l'air de fonctionner.
Vanitas vanitatum et omnia vanitas
Mes derniers livres :
Sauvez les Mots chez BoD,
Tous les chemins mènent à ROM chez BoD

ViPHP
xTG
ViPHP | 7331 Messages

19 déc. 2012, 16:12

qu'l fallait créer la session avant toute chose, ce qui a l'air de fonctionner.
Effectivement si tu lançais s3 avant s1 c'est un peu normal du coup. :P

Eléphant du PHP | 61 Messages

19 déc. 2012, 18:06

Bonjour,
Houla ! un PHP rappeléé par F5 se rééxécute exactement comme s'il était appelé par un lien !
Il renvoie alors un HTML neuf.
Par ailleur comment commences tu un PHP qui ne fait que controler si ta session est OK,
aucun aléa n'existe en programation. Tu devrais avoir

Code : Tout sélectionner

<?php session_start(); $qqch = (isset($_SESSION['qqch'])) ? $_SESSION['qqch'] : ''; if ( $qqch == "texte" ) echo "c'est OK"; ?>
Un sourire pour conclure ;-)

Mammouth du PHP | 2278 Messages

20 déc. 2012, 10:56

Bonjour,
Houla ! un PHP rappeléé par F5 se rééxécute exactement comme s'il était appelé par un lien !
Il renvoie alors un HTML neuf.
Par ailleur comment commences tu un PHP qui ne fait que controler si ta session est OK,
aucun aléa n'existe en programation. Tu devrais avoir
Merci pour la leçon, mais:
Houla ! un PHP rappeléé par F5 se rééxécute exactement comme s'il était appelé par un lien !
:
une page contenant un formulaire déjà rempli se réaffiche à partir du cache avec les mêmes valeurs : c'est ça, une page neuve???
aucun aléa n'existe en programation.
Si on comptait le nombre de bugs dans n'importe quelle application qui se produisent dans des circonstances si obscures qu'il faut en pister longuement la trace, on dirait apparemment aléatoires. Je me souviens d'un programme en Fortran dont le calcul d'une fonction ne passait jamais par zéro: aucun test ne montrait l'erreur, on faisait afficher le nombre (une constante de type float) sous tous les formats disponibles, et on avait toujours 0; pourtant quand on comparait ce nombre à 0, on obtenait FAUX. il fallut faire un dump hexa de la chose pour découvrir que ce réel était stocké avec un 4 en 14ème position décimale... Pas d'aléa, certes...

Pour xtg: en premier, c'est en premier dans le code de la première fonction appelée: tu lances le cochonnet après les boules, toi?
Vanitas vanitatum et omnia vanitas
Mes derniers livres :
Sauvez les Mots chez BoD,
Tous les chemins mènent à ROM chez BoD

Eléphant du PHP | 61 Messages

20 déc. 2012, 11:12

Bonjour,
Bien sur je maintient ce que j'ais dit
1) je réponds a un sujet qui ne parles pas de réception d'un formulaire, mais de récupération de sessions
2) ce que tu expliques longuement en racontant ta vie, confirme exactement ce que je dis, en informatique pas d'aléas (de surprises)
en effet un code mal écrit, que ce soit un Fortrant ou un C ou de l'assembleur, donnera toujours un résultat mauvais !
Allez, reston-en là :wink:
Christele
Un sourire pour conclure ;-)