web-dev-qa-db-fra.com

PHP Passe la variable à la page suivante

Cela semble assez simple mais je ne trouve pas un bon moyen de le faire.

Dis 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, et je n'ai besoin que de passer une simple chaîne (un nom de fichier).

Comment puis-je atteindre cet objectif?

Merci!

185
Carlo

HTML/HTTP est sans état, en d'autres termes, ce que vous avez vu/vu à la page précédente est complètement déconnecté de la page en cours. Sauf si vous utilisez quelque chose comme des sessions, des cookies ou des variables GET/POST. Les sessions et les cookies sont assez faciles à utiliser, la session étant de loin plus sécurisée que les cookies. Plus sécurisé, mais pas complètement sécurisé.

Session:

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

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

N'oubliez pas d'exécuter l'instruction session_start(); sur ces deux pages avant d'essayer d'accéder au tableau $_SESSION, et avant l'envoi de toute sortie 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 réside dans le fait 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 aucune bonne raison d'utiliser des cookies au lieu de sessions, sauf si vous souhaitez 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 vers la page suivante:

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

Cela va créer une variable GET.

Une autre méthode consiste à inclure un champ masqué 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 puis à la page deux:

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

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

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

Modifiez simplement la méthode pour le formulaire en post si vous souhaitez le faire par la poste. Les deux sont également peu sûrs, bien que GET soit plus facile à pirater.

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

422
Jrgns

Merci pour les réponses ci-dessus. Voici comment je l'ai fait, j'espère que cela aidera ceux qui suivront. Je cherche à passer un numéro d'enregistrement d'une page à une autre, d'où regName et regValue :

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 que cela ne soit pas aussi complet que la réponse ci-dessus, ceci illustre de manière simple la relation entre les différents éléments.

30
Frank

Passing data dans la requête

Vous pouvez l'intégrer en tant que champ masqué dans votre formulaire ou l'ajouter à votre URL d'action de formulaire.

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

ou

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

Notez que ceci illustre également l'utilisation de htmlentities et rlencode lors de la transmission de données.

Passer des données dans la session

Si les données ne doivent pas nécessairement être transmises au côté client, les sessions peuvent alors être plus appropriées. Appelez simplement 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 déclarez que votre valeur est en fait un nom de fichier, vous devez être conscient des ramifications de la sécurité. Si le nom de fichier est arrivé du côté client, supposons que l'utilisateur a falsifié la valeur. Vérifiez-le pour la validité! Que se passe-t-il lorsque l'utilisateur passe le chemin d'accès à un fichier système important ou à un fichier sous son contrôle? Votre script peut-il être utilisé pour "sonder" le serveur à la recherche de fichiers existants ou inexistants?

Comme vous venez clairement de commencer ici, il est utile de rappeler que cela vaut pour toutes les données qui arrivent sous forme de $ _GET, $ _POST ou $ _COOKIE - supposez que votre pire ennemi ait conçu le contenu de ces tableaux et codez en conséquence!

16
Paul Dixon

Il existe trois méthodes pour transmettre la valeur en php.

  • Par la poste
  • Par get
  • En rendant la session variable

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

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

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

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

Avant d'utiliser cette syntaxe pour créer une 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 une page identique à celle utilisée par l’utilisateur. Sa syntaxe est la suivante:

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

Les méthodes POST sont généralement plus sécurisées que GET, car lorsque nous utilisons la méthode Get, elles peuvent afficher les données dans la barre d’URL. Si les données sont plus sensibles que le mot de passe, elles peuvent être ingérales.

9
ravi sharma

Les sessions sont le seul bon moyen. Vous pouvez également utiliser GET/POST, mais ce serait potentiellement peu sûr.

7
Alo

essayez ce code

en utilisant un champ caché, nous pouvons passer php varibale à une autre page

page1.php

<?php $myVariable = "Some text";?>
<form method="post" action="page2.php">
 <input type="hidden" name="text" value="<?php echo $myVariable; ?>">
 <button type="submit">Submit</button>
</form>

passe la variable php à la valeur du champ caché afin que vous puissiez accéder à cette variable dans une autre page

page2.php

<?php
 $text=$_POST['text'];
 echo $text;
?>
5
**page 1**
<form action="exapmple.php?variable_name=$value" method="POST"> 
    <button>
        <input  type="hidden" name="x">
    </button>
</form>`

page 2

if(isset($_POST['x'])) {
    $new_value=$_GET['variable_name'];
}
1
V Kash Singh