235 votes

PHP Passer la variable à la page suivante

Cela semble assez simple, mais je n'arrive pas à trouver un bon moyen de le faire.

Disons que dans la première page, je crée une variable

$myVariable = "Some text";

Et l'action du formulaire pour cette page est "Page2.php". Donc, dans Page2.php, comment puis-je avoir accès à cette variable ? Je sais que je peux le faire avec des sessions mais je pense que c'est trop pour une simple chaîne de caractères, et je n'ai besoin de passer qu'une simple chaîne de caractères (un nom de fichier).

Comment puis-je y parvenir ?

Merci !

0 votes

La meilleure et la plus simple façon de passer des variables est celle que j'ai expliquée ici : stackoverflow.com/questions/14465464/

517voto

Jrgns Points 6279

HTML / HTTP est sans état, en d'autres termes, ce que vous avez vu ou fait sur la page précédente n'a aucun rapport avec la page actuelle. Sauf si vous utilisez des éléments tels que les sessions, les cookies ou les variables GET / POST. Les sessions et les cookies sont assez faciles à utiliser, la session étant de loin plus sûre que les cookies. Plus sûre, mais pas complètement.

Session :

//On page 1
$_SESSION['varname'] = $var_value;

//On page 2
$var_value = $_SESSION['varname'];

N'oubliez pas d'exécuter le session_start(); sur ces deux pages avant d'essayer d'accéder à l'espace de travail. $_SESSION et aussi avant que toute sortie soit envoyée au navigateur.

Cookie :

//One page 1
$_COOKIE['varname'] = $var_value;

//On page 2
$var_value = $_COOKIE['varname'];

La grande différence entre les sessions et les cookies est que la valeur de la variable sera stockée sur le serveur si vous utilisez des sessions, et sur le client si vous utilisez des cookies. Je ne vois pas de raison valable d'utiliser les cookies au lieu des sessions, sauf si vous voulez que les données persistent entre les sessions, mais même dans ce cas, il est peut-être préférable de les stocker dans une base de données et de les récupérer en fonction d'un nom d'utilisateur ou d'un identifiant.

GET et POST

Vous pouvez ajouter la variable dans le lien de la page suivante :

<a href="page2.php?varname=<?php echo $var_value ?>">Page2</a>

Cela créera une variable GET.

Une autre méthode consiste à inclure un champ caché dans un formulaire qui se soumet à la page deux :

<form method="get" action="page2.php">
    <input type="hidden" name="varname" value="var_value">
    <input type="submit">
</form>

Et ensuite sur la page deux :

//Using GET
$var_value = $_GET['varname'];

//Using POST
$var_value = $_POST['varname'];

//Using GET, POST or COOKIE.
$var_value = $_REQUEST['varname'];

Il suffit de changer la méthode du formulaire en post si vous voulez le faire par la poste. Les deux sont aussi peu sûrs l'un que l'autre, bien que GET soit plus facile à pirater.

Le fait que chaque nouvelle requête soit, à l'exception des données de session, une instance totalement nouvelle du script m'a interpellé lorsque j'ai commencé à coder en PHP. Une fois qu'on s'y est habitué, c'est assez simple pourtant.

2 votes

Merci, cela m'a aidé, le problème était que j'avais un tas de variables dans la première page, donc ce que j'ai fait était de créer un tableau avec toutes ces variables et de l'envoyer à la page suivante en utilisant des sessions.

0 votes

Schweet :) Heureux d'avoir pu aider.

6 votes

Petit détail : les sessions en PHP sont généralement gérées par des cookies également. Le cookie de session n'est pas un cookie persistant et ne contient généralement que l'identifiant de session. Mais c'est quand même un cookie.

34voto

Frank Points 79

Merci pour les réponses ci-dessus. Voici comment j'ai procédé, j'espère que cela aidera ceux qui suivent. Je cherche à faire passer un numéro d'enregistrement d'une page à l'autre, donc nom de registre y Valeur de référence :

Créez votre première page, appelez-la set_reg.php :

<?php

session_start();

$_SESSION['regName'] = $regValue;

?>

<form method="get" action="get_reg.php">
    <input type="text" name="regName" value="">
    <input type="submit">
</form>

Créez votre deuxième page, appelez-la get_reg.php :

<?php

session_start();

$regValue = $_GET['regName'];

echo "Your registration is: ".$regValue.".";

?>

<p><a href="set_reg.php">Back to set_reg.php</a>

Bien qu'elle ne soit pas aussi complète que la réponse ci-dessus, elle illustre de manière simple la relation entre les différents éléments.

14 votes

Votre exemple fonctionne également sans sessions et ne reçoit pas les données via le mécanisme des sessions (dans get_reg.php). Vous envoyez regName via un formulaire avec la méthode get comme expliqué par Jrgns. La variable est donc accessible à la page get_reg.php via le tableau $_GET.

20voto

Paul Dixon Points 122033

Transmettre des données dans la demande

Vous pouvez soit l'intégrer comme champ caché dans votre formulaire, soit l'ajouter à l'URL de l'action du formulaire.

 echo '<input type="hidden" name="myVariable" value="'.
     htmlentities($myVariable).'">';

ou

echo '<form method="POST" action="Page2.php?myVariable='.
    urlencode($myVariable).'">";

Notez que cela illustre également l'utilisation de Identités html y urlencode lors de la transmission de données.

Transmettre des données dans la session

Si les données n'ont pas besoin d'être transmises au côté client, les sessions peuvent être plus appropriées. Il suffit d'appeler session_start() au début de chaque page, et vous pouvez obtenir et définir des données dans le tableau $_SESSION.

Sécurité

Puisque vous indiquez que votre valeur est en fait un nom de fichier, vous devez être conscient des ramifications en matière de sécurité. Si le nom de fichier provient du côté client, supposez que l'utilisateur a modifié la valeur. Vérifiez sa validité ! Que se passe-t-il si l'utilisateur transmet le chemin d'un fichier système important ou d'un fichier sous son contrôle ? Votre script peut-il être utilisé pour "sonder" le serveur à la recherche de fichiers qui existent ou non ?

Comme vous n'en êtes qu'au début, il est bon de rappeler que cela vaut pour toutes les données qui arrivent dans $_GET, $_POST ou $_COOKIE - supposez que votre pire ennemi a fabriqué le contenu de ces tableaux, et codez en conséquence !

11voto

ravi sharma Points 21

Il existe trois méthodes pour passer une valeur en php.

  • Par courrier
  • Par obtenir
  • En rendant la session variable

Ces trois méthodes sont utilisées à des fins différentes. Par exemple, si nous voulons recevoir notre valeur sur la page suivante, nous pouvons utiliser la méthode 'post' ($_POST) comme suit :-.

$a=$_POST['field-name'];

Si nous avons besoin de la valeur d'une variable sur plus d'une page, nous pouvons utiliser la variable de session comme suit :.

$a=$_SESSION['field-name];

Avant d'utiliser cette syntaxe pour créer la variable SESSION, nous devons d'abord ajouter cette balise au tout début de notre page php.

session_start(); 

La méthode GET est généralement utilisée pour imprimer des données sur la même page que celle qui reçoit les données de l'utilisateur. Sa syntaxe est la suivante :

$a=$_GET['field-name'];

La méthode POST est généralement plus sûre que la méthode GET, car lorsque nous utilisons la méthode Get, les données peuvent être affichées dans la barre d'adresse URL.

7voto

Alo Points 826

Les sessions seraient le seul bon moyen, vous pourriez aussi utiliser GET/POST mais ce serait potentiellement peu sûr.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X