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

Répondre
oximini
le 12/03/2008 à 18:22
oximini
Bonjour à tous

Voici mon problème: j'ai une page contenant un formulaire qui amène sur une seconde page contenant un deuxième formulaire. Jusque là, rien d'extraordinaire. Cette seconde page prend en compte toutes les variable passées en POST du formulaire précédent et les inclu dans des variables de sessions. Ceci pour deux choses: tout d'abord au cas ou l'utilisateur souhaite revenir en arrière et enfin parce que je traite les données au niveau mySQL d'un bloc. Je souhaite donc valider mon deuxième formulaire et passer sur la dernière page qui traite toutes les données. Mais là, problème ! mes variables de sessions disparaissent !

Voici, en très aminci, le code de ma page (second formulaire et non page de traitement)

<?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>



En enlevant toute ma mise en forme de page (c'est à dire dans l'exemple de code contenu ci-dessus, tout ce qui se trouve avant la balise <form ... ...>) mes variables de session sont bien transmises à la page de traitement.

Quelqu'un aurait éventuellement une idée de la bêtise que je fais ?
Ci-dessous, la partie HTML avant le formulaire:

<!-- ------------------- 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>



Outre le fait que j'utilise des tableau pour ma mise en page (pas bien, je sais), n'hésitez pas à me dire si vous voyez une énormité qui explique le blocage de mes variables d'une page à l'autre.
Sammuel
le 12/03/2008 à 19:00
Sammuel
Il faut que tu ajoutes en haut de toutes tes pages :
<?php
session_start();
?>

... pour que les données en session se transmettent entre toutes les pages !
oximini
le 12/03/2008 à 21:29
oximini
C'est de l'humour j'espère ? smiley


Quelqu'un aurait une idée sur ce problème (APRÈS avoir lu mon post et son exemple... smiley )
LA GLOBULE
le 12/03/2008 à 22:11
LA GLOBULE
Ben ton exemple n'est pas clair, on ne voit pas ou tu enregistres tes données en session et ou tu testes de les afficher (et donc éventuellement les voir vide).
Keika
le 13/03/2008 à 00:22
Keika
Moi je demanderai plutot comment tu appelles tes pages ?
Est-ce avec un include dans index.php ou une par une avec leur lien respectif ? Si c'est le second cas, la reponse de Sammuel est loin d'etre bete, il faut que tu verifies que dans chaque page tu ais bien session_start.
Le PHP --> C'est dur !
oximini
le 13/03/2008 à 09:08
oximini
Oui, mais si je faisais de l'humour sarcastique, c'est bien parce que le session_start() est évidemment présent. ;)
Sans ton session_start, tu ne peux rien traiter, même pas la moitié, hors je parle bien de "moitié de variables de session qui disparaissent" smiley

Je vais essayé de ré-expliquer succinctement le problème:

1 - Je suis connecté via une page de login et deux variables de sessions sont déclarées: id et login

Où que j'aille, ces deux variables sont toujours bien présentes.

2 - Je choisi, via un lien, d'aller sur un formulaire. Dans ce formulaire, plein de champs à remplir et un bouton pour aller à l'étape 2 (car gros formulaire, donc découpé en deux pages).

3 - Quand j'arrive sur la seconde étape, le début du script traite toutes les données envoyées par POST de la page (du formulaire) précédente. Chaque données POST est déclarée dans une variable de session. Juste après cela, je contrôle que mes variables de sessions sont bien déclarées et enregistrées en les affichant toutes. Pas de soucis, elle sont bien là et enregistrées

4 - je rempli (ou pas) le second formulaire et je clique sur le bouton valider pour arriver sur la page qui traite les données et qui me dira si tout s'est bien passé. Et là c'est le drame ! quand j'arrive sur cette page de traitement, la première chose que je fais (après mon session_start bien sur !) c'est de contrôler de nouveau mes variables de session en les affichant toutes. Eh bien toutes mes variables de sessions enregistrées à la page précédente sont vides ! En revanche, les deux variables de sessions contenant l'id et le login, elles, existent toujours et s'affichent bien.


C'est là que je suis perdu.

En enlevant le pavé de mise en page juste avant le formulaire (cf le code que j'ai mis dans le premier message), mes variables de sessions sont bien transmises à la page de traitement suivante et s'affichent de nouveau toutes grâce à mon contrôle.

D'où mon incompréhension... comment un bloc de code purement HTML/CSS (sans inclusion PHP entre) peut altérer mes variables de sessions ???
oximini
le 13/03/2008 à 09:13
oximini
LA GLOBULE

Mes variables sont tout simplement enregistrées comme ceci :
if (isset($_POST['ma_donnée_provenant_de_mon_formulaire'])){ $_SESSION['nom_variable'] = $_POST['ma_donnée_provenant_de_mon_formulaire']}


Quand à la véification, je la fais simplement comme ceci:

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


Ensuite, je n'ai que du code HTML en dessous (seconde partie de formulaire) avec un bouton valider me permettant d'arriver sur la troisième et dernière page traitant toutes les données... normalement contenue dans les variables de session !
LA GLOBULE
le 13/03/2008 à 09:53
LA GLOBULE
D'où mon incompréhension... comment un bloc de code purement HTML/CSS (sans inclusion PHP entre) peut altérer mes variables de sessions ???


Ptet que tu ne regardes pas le code du bon fichier. C'est à dire que tu modifies un fichier mais ce n'est pas celui ci que tu lances dans ton navigateur. Ca peut paraitre con, mais ca m'est arrivé encore hier (alors que ca fait 10 ans que je code tous les jours).

En tout cas, une chose est sure, le problème ne vient pas du HTML. Faut décortiquer, mais le bug est surement du à une erreur de code.
oximini
le 13/03/2008 à 12:15
oximini
Arf et re-Arf !
Le problème vient bien du code HTML et plus précisément de mes balises images pour la mise en page.

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


Voilà ce qui pose problème.
Et encore plus précisément, c'est la source vide qui ne lui va pas.
Dès que je la met en dur, les variables de sessions passent sans soucis.
Je ne sais pas l'expliquer (d'autant que la source est définie par un script JS en fonction du navigateur et que cela fonctionne correctement à l'affichage)
LA GLOBULE
le 13/03/2008 à 12:30
LA GLOBULE
Non, ce n'est pas ça qui pose problème.

Quand tu affiches une image sans le src, que se passe t il ? C'est ça la vraie question à se poser.

Et bien le navigateur "get" en fait une deuxième fois la page courante.
Et c'est surement en faisant un deuxième get que ta session meurt.

Bref, le problème, ce n'est pas une image sans src, c'est que ton script ne gère pas le fait que l'on puisse appuyer sur F5.
Répondre
LoadingChargement en cours