variable session

Eléphanteau du PHP | 28 Messages

19 mars 2010, 20:25

Bonjour,

J'ai suivi un tuto : http://geai.univ-brest.fr/~cardot/lpd/e ... ession.php

Donc j'ai créé une page page1.php

Code : Tout sélectionner

<?php session_start(); ?> <html> <body> <form method="POST" action="page2.php"> Entrez votre nom : <input type="TEXT" name="nom"> <input type="SUBMIT" value="OK"> </form> </body> </html>
une page2.php

Code : Tout sélectionner

<?php session_start(); $nom = $_POST['nom']; $_SESSION['nom'] = $nom; ?> <html> <body> Bienvenue sur ce site <b><?php echo $nom; ?></b>.<br /> Regardons ce qui se passe sur la <a href="page3.php">page</a> suivante.<br /> </body> </html>
Et une page3.php

Code : Tout sélectionner

<?php session_start(); $nom = $_SESSION['nom']; ?> <html> <body> Vous êtes toujours parmi nous <b><?php echo $nom; ?></b>.<br /> Effacement de votre nom en cliquant <a href="page4.php">ici</a>.<br /> </body> </html>
Mon pb est que la variable session n'est "utilisable" qu'à la 3eme page, si je fais une requête quand je suis sur la deuxième page, la variable session n'a pas été enregistrée. En bref est t-il possible d'enregistrer la variable sur la deuxième page.

Merci

ViPHP
ViPHP | 1136 Messages

19 mars 2010, 20:30

Je viens de tester tes pages à tout hasard ...

et à la page 2 :
<?php
session_start();
$nom = $_POST['nom'];
$_SESSION['nom'] = $nom;
?>
<html>
<body>
<?php echo $_SESSION['nom'];?> 
Bienvenue sur ce site <b><?php echo $nom; ?></b>.

Regardons ce qui se passe sur la
<a href="c.php">page</a> suivante.

</body>
</html>
J'affiche bien ma variable de session ... quelle est la requête qui ne fonctionne pas ?

Ch.

ViPHP
ViPHP | 1136 Messages

19 mars 2010, 20:36

Apres effectivement , si tu reviens sur ta page2 apres être allé sur la page3 , ta session est effecé , ou plus exactement ,

$_SESSION['nom'] est réinitialisé .

Et oui les données $_POST n'héxistent plus , celà revient donc à faire
$_SESSION['nom'] = "";
Voilà ,

Ch.

Eléphanteau du PHP | 28 Messages

19 mars 2010, 20:44

Ok merci,

Oui donc il n'y a pas de solution pour que je puisse revenir à la page 2 en ayant mes données ? quelle solution est ce que je peux employer pour cela ?

ViPHP
ViPHP | 1136 Messages

19 mars 2010, 20:48

Tout simplement tester ta variable de session ... ou POST .

exemple :
if( !empty( $_POST['nom'] ) ){
    $_SESSION['nom'] = htmlentities($_POST['nom'],ENT_QUOTES);
}
Ainsi , $_SESSION['nom'] prend la valeur de $_POST['nom'] uniquement si celle-ci existe .. , donc si le formulaire vient d'être validé .

Ch.

Eléphanteau du PHP | 28 Messages

19 mars 2010, 21:31

Merci pour la réponse mais je débute alors je sais pas trop... est ce que c'est un truc du genre... mais ça marche pas
<?php
session_start();
$nom = $_POST['nom'];
$_SESSION['nom'] = $nom;
if( !empty( $_POST['nom'] ) ){
    $_SESSION['nom'] = htmlentities($_POST['nom'],ENT_QUOTES);
}
?>

ViPHP
ViPHP | 1136 Messages

19 mars 2010, 21:35

Il faut que tu retires les lignes qui ont étés remplacées ,
$nom = $_POST['nom'];
$_SESSION['nom'] = $nom;
Et à la place de $nom , dans le code en dessous , utilises toujours $_SESSION['nom'] , qui maintenant est filtré .

Ch.

Eléphanteau du PHP | 28 Messages

22 mars 2010, 12:54

Merci bien c'est exactement ça. merci beaucoup ! =D>