Problème sur la portée de $_POST
Résolu
JamieMacUloth
Messages postés
43
Date d'inscription
Statut
Membre
Dernière intervention
-
JamieMacUloth Messages postés 43 Date d'inscription Statut Membre Dernière intervention -
JamieMacUloth Messages postés 43 Date d'inscription Statut Membre Dernière intervention -
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):
Mon fichier target.php (la cible de mon formulaire):
=> Ici le prénom est bien reconnu!
Problème sur le fichier
one_page.php (une page quelconque de mon site):
=> 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!!
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!!
A voir également:
- Problème sur la portée de $_POST
- Alcatel f860 hors portée - Forum telephonie fixe
- Portee wifi - Guide
- Augmenter portée bluetooth android - Forum Bluetooth
- Téléphone hors portée - Forum telephonie fixe
- Ecran hors de portée - Forum Ecran
1 réponse
yg_be
Messages postés
23541
Date d'inscription
Statut
Contributeur
Dernière intervention
Ambassadeur
1 584
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
- tu ajoutes
- tu ajoutes
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
JamieMacUloth
Messages postés
43
Date d'inscription
Statut
Membre
Dernière intervention
Merci beaucoup yg_be !! C'est exactement la réponse qui m'a débloqué. Je suis trop content. Encore merciii !!!!!!!!