transfert de données d'une page à une autre

Petit nouveau ! | 3 Messages

10 janv. 2009, 19:54

Bonjour,
Je suis débutant en PHP et j'utilise une version associée à wamp5 il s'agit de PHP 5.2.5
j'aimerai faire suivre les données récoltés sous un formulaire vers plusieurs pages de traitement en fonction de la donnée.
la documentation me propose d'utiliser session_start() pour le faire.

J'ai placé la section php contenant session_start en premier puis mes acces au formulaire.

J'ai fait un essai sur un formulaire simple avec 2 variables
<
<form action='traitement1.php' method='POST'>
<input type='text' name='utilisateur'/>
<textarea name='commentaire' rows='10' cols='40'>
</textarea>
<input type='submit' value='valid' />
</form>

Mon souci est que je ne récupère rien dans le traitement1.

Je me trompe surement mais ou ?

Merci d'avance pour votre aide

Eléphant du PHP | 447 Messages

10 janv. 2009, 20:02

bonjour, ça va être difficile de te répondre sans connaître le contenu de traitement1.php
Probably (only a) Human Problem?

Petit nouveau ! | 3 Messages

10 janv. 2009, 20:09

Il s'agit d'un traitement simple dans le style débutant afin de comprendre le système avant de me lancer dans des traitements plus compliqués


<?php
session_start();
?>
<html>
<body>
<?php
print "hello : ".$_SESSION['utilisateur']." ca va ?";
print "hello : ".$_SESSION['commentaire']." ca va ?";
?>
</body
</html>

Mammouth du PHP | 693 Messages

10 janv. 2009, 21:43

Il s'agit d'un formulaire donc les données sont dans le tableau $_POST.

ViPHP
ViPHP | 1996 Messages

11 janv. 2009, 12:28

Ce que veux dire orgerix est que tu confond variable de session et variable "postées".
Quand tu envoi un formulaire avec ton code

Code : Tout sélectionner

<form action='traitement1.php' method='POST'> <input type='text' name='utilisateur'/> <textarea name='commentaire' rows='10' cols='40'> </textarea> <input type='submit' value='valid' /> </form>
tu as une méthode stipulée : method="POST"

On dis alors que cette méthode est envoyée via POST et on récuperera les variables envoyées via un tableau associatif $_POST dans la page action='traitement1.php'.

Ainsi ton code

Code : Tout sélectionner

<html> <body> <?php print "hello : ".$_SESSION['utilisateur']." ca va ?"; print "hello : ".$_SESSION['commentaire']." ca va ?"; ?> </body </html>
deviendra

Code : Tout sélectionner

<html> <body> <?php print "hello : ".$_POST['utilisateur']." ca va ?"; print "hello : ".$_POST['commentaire']." ca va ?"; ?> </body </html>
Pour aller dans ce que tu recherches tu peux "stocker" les variables $_POST dans une variable de sessions. Les variables de sessions sont stockées sur le serveur dans une variables $_SESSION. Mais ceci qu'à conditions que tu mettes la fonction session_start() en haut de la page (en fait tu peux la mettre ailleurs mais en haut de la page cela permet de ne pas l'oublier).
Donc ton code pourrais se transformer en :
<?php
session_start();
//je teste si le formulaire a été posté
if (isset($_POST['utilisateur'])) $_SESSION["utilisateur"] = $_POST['utilisateur'];
if (isset($_POST['commentaire'])) $_SESSION['commentaire'] = $_POST['commentaire'];
?>
<html>
<body>
<?php
print "hello : ".$_SESSION['utilisateur']." ca va ?";
print "hello : ".$_SESSION['commentaire']." ca va ?";
?>
</body
</html>
Après tu peux récupérer, manipuler, effacer,... les deux variables de session ci-dessus dans d'autres pages si et seulement si session_start() est indiqué.
L'avantage des sessions : les valeurs enregistrées sont invisibles pour le visiteur.
L'inconvénient : les coockies doivent être activé pour transmettre l'identifiant de session (souvent source de questions). Si les coockies sont désactivés, il faut transmettre cet identifiant via l'url via la méthode GET (mais tu n'en ai pas encore là...)
It is nice to be important but it is more important to be nice
http://www.aureuswebfactory.fr

Petit nouveau ! | 3 Messages

11 janv. 2009, 17:00

Merci Aureusms,

En fait la récupération des données se fait dans la partie traitement seulement si la présence des variable dans le tableau $_SESSION sont effectives (utilisation de isset pour en teste la presence)

ViPHP
ViPHP | 1996 Messages

11 janv. 2009, 19:47

Oui pour isset pour tester la présence mais la récupération se fait via $_POST dans ton cas. Ensuite tu stockes dans la variable de session. Tu peux aussi tester les variable des session via isset.
Enfin pour vérifier si les variable existent et qu'elles ne sont pas vides (ca arrive que les visiteurs clique avant de remplir) : tu as la fonction empty();

ton code deviendrai :
session_start();
//je teste si le formulaire a été posté
if (!empty($_POST['utilisateur'])) $_SESSION["utilisateur"] = addslashes($_POST['utilisateur']);
if (!empty($_POST['commentaire'])) $_SESSION['commentaire'] = addslashes($_POST['commentaire']);
?> 
J'ai ajouté addslahes pour que tu puisses aussi penser sécurité.
It is nice to be important but it is more important to be nice
http://www.aureuswebfactory.fr