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

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : transfert de données d'une page à une autre

par Aureusms » 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é.

par yann57 » 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)

par Aureusms » 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à...)

par orgerix » 10 janv. 2009, 21:43

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

par yann57 » 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>

par Stef » 10 janv. 2009, 20:02

bonjour, ça va être difficile de te répondre sans connaître le contenu de traitement1.php

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

par yann57 » 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