Moitié de mes sessions qui disparaissent d'une page à l'autre

:hello:

Il m’arrive un phénomène bizarre :pt1cable:

Façon de façon synthétisé le fonctionnement de mon truc:

Page 1 -> je m’authentifie. Si ok, j’ai deux variables de sessions (mettons id et login) initialisé

Page 2 -> j’ai un formulaire avec plein de champs et mon bouton pour passer à l’étape suivante

Page 3 -> je traite mes champs précédent. Si c’est ok, j’initialise de nouvelles variables de sessions avec comme valeur ces champs
un nouveau formulaire avec de nouveaux champs se présentent avec le bouton pour l’étape suivante qui va bien

Jusqu’ici tout va bien. Dans cette page 3, après l’initialisation des variables de sessions je fais un test de controle:


echo "Sessions: <pre>";
print_r($_SESSION);
echo "</pre>";

Je clique sur mon bouton pour acceder à la derniere étape (page 4) et là c’est le drame, mes variables de sessions précédentes (page 3) ont toutes disparues

MAIS ! les toutes premières, id et login, elles, existent et subsistent puisqu’un nouveau contrôle (cf code ci-dessus) me donne la valeur de ces variables.
En revanche toutes les autres variables existent mais sont maintenant vide.

Quelqu’un a une idée sur le problème ? :etonne2:

Je précise bien sur que chaque script démarre bien par un session_start(); et qu’il n’y a aucun espace ni echo, bref rien, avant la balise <?php

J’en perd mon latin avec cette histoire :sweet:
Il y a un truc qui lui plait pas entre le passage de la page 3 et celui de la page 4

Saluton,
Sans voir les scripts incriminés, ça va être coton de faire un diagnostic.

Finalement c’est encore plus délirant que prévu: sous IE ça fonctionne (les variables de sessions sont bien conservées d’une page à l’autre) mais c’est sous FF que ça merdouille (seules les deux premières variables, celle initialisées au tout départ) sont conservées).

Je vais faire un test avec opera, je reviens de ce pas

Maljuna: je poste ça dans quelques minutes


Fichtre !! :etonne2::etonne2:

ça fonctionne aussi sous Opera !

Un problème de gestion des sessions sous FF ?

Voici l’idée des scripts pour faire simple:

Page1:


Je demande mon login + mdp et si OK j'initialise mes deux variables $_SESSION['id'] et $_SESSION['login'] et j'arrive sur un menu proposant un lien vers un formulaire (ici appelé page 2)

Page 2:


<?php session_start(); ?>
Mes deux variables de sessions id et login sont initialisées avant car je me suis authentifié

Ici: ma page HTML avec mon formulaire plein de champs + bouton valider vers la page 3

Page 3:


<?php
session_start();
Je vérifie chaque champs et j'attribue leur valeur à une variable de sessions. Exemple:
if (isset($_POST['pays'])) { $_SESSION['pays'] = $_POST['pays'];}

Après avoir initialisé chaque variables de sessions, je les affiche pour controler:
echo "Sessions: <pre>";
print_r($_SESSION);
echo "</pre>";
?>

Ma page m'affiche bien le array contenant toutes les variables de sessions pour le moment initialisées


Cette page-ci contient d'autre champs de formulaire + un bouton valider pour passer à la page 4

Page 4:


Ici, je ne fais pour le moment rien du tout, juste un controle pour voir ou j'en suis dans mes variables de sessions:
<?php
session_start();
echo "Sessions: <pre>";
print_r($_SESSION);
echo "</pre>";

Et là c'est le drame, apparaissent bien les deux variables id et login, mais toutes les autres sont vides (néanmoins elles apparaissent bien)

Voilà… c’est tout. Pas besoin des scripts pour comprendre, tout est dit. Il n’y a rien d’autre, et bien sur pas d’erreur de syntaxe
Edité le 12/03/2008 à 15:13

Bon,

Alors au niveau du code HTML de la page 3, quand j’enlève toute la mise en page avant le formulaire, cela fonctionne sous FF


<?php
session_start();
//déclaration de toutes mes variables de session suite au formulaire précédent
?>
<html>
<body>

ICI, ma mise en forme (diverses images appelant du CSS pour la mise en place, un tableau dessinant un cadre appelant aussi du CSS pour se placer là ou ça va bien, et enfin un paragraphe entre <p> et </p> appelant aussi du CSS pour être bien placé ou je veux)

<form blabla bla bla blabla >
mon formulaire, tout ça patin couffin
</form>
</body>
</html>

mais je reste dubitatif… il ne s’agit pourtant que de pur HTML/CSS à ce niveau. Même pas une inclusion php dedans.
Donc je ne vois pas en quoi cela bloque mes sessions :etonne2:

Je crois que je comprend encore moins bien qu’au début :lol:
Edité le 12/03/2008 à 16:51

Allez, encore un effort, tu es sur la bonne voie si tu commences à te dire que c’est ton code qui est en cause plutôt que FF.

Non, bah je suis perdu là :neutre:

En enlevant ce pavé, ça fonctionne, et quand il y est, ça ne fonctionne pas.
Je n’ai aucune idée du comment ni du pourquoi.

En le déplaçant en dessous de la partie formulaire, ça ne fonctionne pas non plus


Je post à tout hasard le pavé qui pose problème, si quelqu'un y voit une grossière erreur qui m'aurait échappé (outre le fait que j'utilise un tableau :na: )

<!-- ------------------- Positionnement des bulles ------------------- -->
	<img border="0" src="" id="1" alt="waiting" class="bulle-1" />
	<img border="0" src="" id="2" alt="waiting" class="bulle-1" />
	<img border="0" src="" id ="3" alt="annonces" class="bulle-2" />
	<img border="0" src="" id="titre" alt="Titre" class="titre" />
	<img border="0" src="" id="logo" alt="Logo" class="logo" />

<!-- ------------------- Tableau cadre ------------------- -->
	<table border="0" cellpadding="0" cellspacing="0" width="1024" class="tableauPrincipal">
		<tr>
			<td width="3" class="td_coin_gauche">
			</td>
			<td colspan="4" height="3" class="td_barre_haut">
			</td>
			<td width="3" class="td_coin_droit">
			</td>
		</tr>
		<tr>
			<td width="3" class="td_barre_laterale_gauche">
			</td>
			<td colspan="4" height="550">
			</td>
			<td width="3" class="td_barre_laterale_droite">
			</td>
		</tr>
	</table>
<!-- ------------------- Tableau Etape ------------------- -->
	<table border="0" cellpadding="0" cellspacing="0" width="350" class="tableauEtape">
		<tr>
			<td align="center" valign="middle">
				<img border="0" src="etape2.png" id="Etape2" alt="Etape 2" />
			</td>
			<td align="left" valign="middle">
				<span class="rouge"><u>Etape 2</u></span>
			</td>
		</tr>
	</table>
<!-- ------------------- Tableau upload photos ------------------- -->
	<p class="avertissement">
		<img border="0" src="" id="avertissement" alt="Logo Avertissement" class="avertissementImg" />
		Seules les photos aux formats JPG ou PNG sont accept&eacute;es.
	</p>


Juste en dessous il y a donc mon formulaire avec le bouton qui amène à la page 4 et est censé transporter les variables de sessions.

Help ? :ange:

sans déconner… je suis une vraie pastèque, je trouve pas :sweet:

Bah.

Si tu conserves l’id et le login du début à la fin, tu n’as pas 36 causes: tu réinitialises tes deux variables de sessions quelque part.

Fais une recherche sur le nom de la variable de session perdue…

Que nenni, ces deux variables je les ai enregistrée au tout départ (page de login). C’est la seule différence avec les autres.

Celles provenant du formulaire sont enregistrées, puis disparaissent à la page d’après.

Je ne m’explique pas deux choses:

  • pourquoi cela fonctionne avec IE et Opera
  • pourquoi en enlevant le pavé de code HTML au dessus du formulaire, les variables passent bien. Cela ne devrait avoir aucune influence

J’ai bien sur eu l’espoir d’un petit bug du à une mauvaise version de PHP. J’ai donc changé de version, mais non, le résultat est le même.

La seule solution que j’entrevois, tanpis, c’est de traiter les données tout de suite avant de passer à la dernière page.

Méthodologiquement, puisque tu as repéré que la présence ou non d’un bloc de code html engendrait le problème, procède pas à pas, en instillant ce bloc par morceau jusqu’à détecter ce qui déclenche ce comportement en apparence aberrant.

Ben voilà… c’est fait.
Ce sont mes images qui pose problème :heink:

Exemple:


<img border="0" src="" id="avertissement" alt="Logo Avertissement" class="avertissementImg" />

C’est apparemment le fait que qu’il n’y ait pas de source (celle-ci est traitée au chargement de la page en JS en fonction du navigateur) qui ne lui vas pas :neutre:

J’ai bien du mal à expliquer le pourquoi du comment :etonne2:

Quand je lui met un chemin en dur pour la source… pas de soucis, les sessions passent.
Pourtant, le chemin est bien inséré par le script JS puisque les images, en fonction d’être sous IE ou sous FF apparaissent bien (sans couche alpha pour IE, et avec couche alpha sous FF)

ça me navre tout ça… il va falloir que je revois toutes mes pages :sweet:

Bon, alors j’ai une éventuelle explication:

En fait, en laissant le source vide, FF ferait une seconde requete GET sur la page APRES que le JS ai fournis la source.
Ce qui ferait donc perdre les variables de sessions toute fraichement acquise.

Voilà…

Reste à savoir comment se comporte précisément les autres navigateurs dans ce cas puisque seul FF bloquait.

Normal.

src="" --> page par défaut. Donc il faut appel à la page en cours, car il résoud les chemins en fonction de la page en cours. C’est certes bête pour ton cas, mais bref…

Essaye en foutant un display: none. On écrit le code HTML de ton image en JS…

T’aurais du me donner le tuyau hier… :o

Depuis tout a été refait autrement :ane:

Je m’inscris sur Clubic, bien que je sois pas un super fan, pour vous remercier…

J’ai eu le même souci, sa doit faire plusieurs heures que je galère avec le même souci.

Je pensais mettre une image tout à la fin avant de mettre mon site en production et j’avais par conséquent laisser un champ vide.

Sous Opéra et IE7 aucun souci alors que sous Firefox je galérais sans rien comprendre… :stuck_out_tongue:

Bref merci à vous, ce fil de discussion m’a évité de devenir complètement fou :smiley: