Problème sur la portée de $_POST

Résolu/Fermé
JamieMacUloth Messages postés 43 Date d'inscription jeudi 16 février 2017 Statut Membre Dernière intervention 6 juin 2022 - 18 nov. 2017 à 15:54
JamieMacUloth Messages postés 43 Date d'inscription jeudi 16 février 2017 Statut Membre Dernière intervention 6 juin 2022 - 18 nov. 2017 à 20:06
Bonjour,

Je suis novice en PHP, et j'ai une question qui peut paraître un peu bête mais voilà mon problème:

Depuis une page form.php, je rentre mon prenom dans un form avec submit. Je cible un fichier target.php et je récupère bien $_POST['prenom'] depuis ce fichier target.php. Par contre, j'aimerais également que $_POST['prenom'] soit accessible directement sur mon site depuis n'importe quel page sans passer par des données transitant dans l'url. Comme j'ai lu dans le cours d'openclassroom que $_POST est une variable superglobale, j'ai cru comprendre qu'elle était visible de partout. Or ça n'est pas le cas avec mon code. Pour être plus clair, je vous donne l'intégralité de mon code ci-dessous:

Fichier form.php (mon formulaire):

<!DOCTYPE html>
<html>
<head>
<title>Notre première instruction : echo</title>
<meta charset="utf-8" />
</head>
<body>
<p>
Cette page ne contient que du HTML.<br />
Veuillez taper votre prénom :
</p>

<form action="target.php" method="post">
<p>
<input type="text" name="prenom" />
</p>

<p>
<input type="submit" value="Valider" />
</p>
</form>

<p> si tu souhaites vérifier l'impact de ce formulaire sur une autre page: <a href="one_page.php">test impact formulaire!</a></p>
</body>
</html>


Mon fichier target.php (la cible de mon formulaire):

<!DOCTYPE html>
<html>
<head>
<title>Notre première instruction : echo</title>
<meta charset="utf-8" />
</head>
<body>
<p>Bonjour !</p>

<p>Je sais comment tu t'appelles, hé hé. Tu t'appelles <?php echo $_POST['prenom']; ?> !</p>

<p>Si tu veux changer de prénom, <a href="form.php">clique ici</a> pour revenir à la page formulaire.php.</p>


<p> si tu souhaites vérifier l'impact de ce formulaire sur une autre page: </p><a href="one_page.php">test impact formulaire!</a>
</body>
</html>


=> Ici le prénom est bien reconnu!

Problème sur le fichier

one_page.php (une page quelconque de mon site):


<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />

</head>

<body>

<p>
<?php

if (isset($_POST['prenom'])) {

echo "coucou, je connais ton prénom. La preuve: tu t'appelles: " . $_POST['prenom'];
}else{
echo "je ne connais pas ton prénom car depuis cette page, la variable _POST[prenom] est inconnue :'(";
}
?></p>

<p>Si tu veux changer de prénom, <a href="form.php">clique ici</a> pour revenir à la page form.php.</p>


</body>

</html>


=> Là problème: $_POST['prenom'] n'est pas reconnu alors que je pensais qu'en tant que variable superglobale, elle aurait dû l'être.

Du coup, pour arriver au même résultat, je suis passé par la transmission du paramètre prénom dans l'url, mais je n'aime pas beaucoup cette méthode. Et j'aimerais savoir si on peut arriver à faire quelque chose avec la méthode $_POST sans transmettre quoi que ce soit dans l'url.

Merci beaucoup d'avance pour votre aide!!

1 réponse

yg_be Messages postés 22692 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 16 avril 2024 1 471
Modifié le 18 nov. 2017 à 16:04
bonjour, je pense que $_SESSION te permettra de réaliser ce que tu souhaites. cela te permet de mémoriser des informations liées à une session d'un utilisateur, pour la durée de cette session.
en gros:
- tu ajoutes
session_start();
au début du code php de toutes tes pages.
- tu ajoutes
$_SESSION["prenom"]=$_POST['prenom'];
dans la page qui "reçoit" le prénom de l'utilisateur.
- tu ajoutes
$prenom= $_SESSION["prenom"];
partout ou tu veux récupérer le prénom de l'utilisateur
0
JamieMacUloth Messages postés 43 Date d'inscription jeudi 16 février 2017 Statut Membre Dernière intervention 6 juin 2022
18 nov. 2017 à 20:06
Merci beaucoup yg_be !! C'est exactement la réponse qui m'a débloqué. Je suis trop content. Encore merciii !!!!!!!!
0