web-dev-qa-db-fra.com

Passer plusieurs variables à une autre page en url

Je passe une variable à une autre page dans une URL en utilisant des sessions comme celle-ci, mais il semble que je ne puisse pas concaténer une autre variable dans la même URL et la récupérer avec succès dans la page suivante.

Page 1

session_start();
$event_id = $_SESSION['event_id'];
echo $event_id;

$url = "http://localhost/main.php?email=" . $email_address . $event_id;     

Page 2

if (isset($_GET['event_id'])) {
$event_id = $_GET['event_id'];}
echo $event_id;

echo $event_id montre une erreur Undefined variable à la page 2 mais si j’utilise uniquement le event_id dans le $url comme ici

 $url = "http://localhost/main.php?event_id=" . $event_id;

Cela fonctionne bien, mais je dois être en mesure d'utiliser les deux variables dans l'URL afin que la page 2 puisse les récupérer.

32
Abuzzy

Utilisez l'esperluette & pour coller des variables ensemble:

$url = "http://localhost/main.php?email=$email_address&event_id=$event_id";
//                               ^ start of vars      ^next var
104
JvdBerg

Réponse courte:

C’est ce que vous essayez de faire, mais cela pose quelques problèmes de sécurité et d’encodage, ne le faites pas.

$url = "http://localhost/main.php?email=" . $email_address . "&eventid=" . $event_id;

Longue réponse:

Toutes les variables dans les chaînes de requête doivent être codées dans un code url pour assurer une transmission correcte. Vous ne devez jamais transmettre les informations personnelles d'un utilisateur dans une URL, car les URL sont très étanches. Les URL se retrouvent dans les fichiers journaux, les historiques de navigation, les en-têtes de référence, etc. La liste s'allonge encore et encore.

Quant au bon encodage d’URL, il peut être obtenu avec urlencode() ou http_build_query() . L'un ou l'autre devrait fonctionner:

$url = "http://localhost/main.php?email=" . urlencode($email_address) . "&eventid=" . urlencode($event_id);

ou

$vars = array('email' => $email_address, 'event_id' => $event_id);
$querystring = http_build_query($vars);
$url = "http://localhost/main.php?" . $querystring;

De plus, si $event_id Figure dans votre session, vous n'avez pas besoin de le transmettre pour pouvoir y accéder à partir de pages différentes. Il suffit d'appeler session_start() et il devrait être disponible.

22
Asaph

Votre première déclaration variable doit commencer par un ? tandis que tout élément supplémentaire doit être concaténé avec un &

6
Crobzilla

Assez simple, mais un autre a dit que vous ne passez pas les variables de session par la barre d’URL
Voici le code de la première page

$url = "http://localhost/main.php?email=" . urlencode($email_address) . "&eventid=" . urlencode($event_id);

2ème page lors de l'obtention des variables de la barre d'URL est:

if(isset($_GET['email']) && !empty($_GET['email']) AND isset($_GET['eventid']) && !empty($_GET['eventid'])){ ////do whatever here }

Maintenant, si vous voulez utiliser correctement la session que vous avez créée, ignorez le code ci-dessus et appelez les variables de session de la deuxième page. Par exemple, créez une session sur la première page, par exemple:

 $_SESSION['WEB_SES'] = $email_address . "^" . $event_id;

il est évident que vous auriez déjà attribué des valeurs aux variables de session dans le code ci-dessus, vous pouvez appeler le nom de la session comme bon vous semble. Je viens d'utiliser l'exemple Web_ses. La deuxième page vous suffit de démarrer une session et de voir si le la session est là et vérifiez les variables et faites ce que vous voulez, exemple:

 session_start();
 if (isset($_SESSION['WEB_SES'])){
 $Array = explode("^", $_SESSION['WEB_SES']);
 $email = $Array[0];
 $event_id = $Array[1]
 echo "$email";
 echo "$event_id";
 }

Comme je l'ai déjà dit, le point positif des sessions est qu'elles peuvent être utilisées dans tout le site Web si ce type de code est placé dans le fichier d'en-tête appelé sur toutes les pages chargées, vous pouvez simplement utiliser la variable où et quand. J'espère que cela t'aides :)

3
Anthony Pfeiffer
<a href="deleteshare.php?did=<?php echo "$rowc[id]"; ?>&uid=<?php echo "$id";?>">DELETE</a>

Passer plusieurs variables d'une page à une autre page

1
Vijayendran.R

Vous vérifiez isset($_GET['event_id'] mais vous n'avez pas défini cette variable dans votre lien hypertexte, vous ajoutez simplement email

http://localhost/main.php?email=" . $email_address . $event_id

Et ajoutez une autre variable GET dans votre lien

$url = "http://localhost/main.php?email=$email_address&event_id=$event_id";

Vous n'avez pas utilisé pour concaténer votre chaîne si vous utilisez " citations

1
Mr. Alien

Utilisez & pour cela. En utilisant & vous pouvez mettre autant de variables que vous voulez!

$url = "http://localhost/main.php?event_id=".$event_id."&email=".$email;
1
Bhavyanshu

de php.net

Avertissement Les superglobales $_GET Et $_REQUEST Sont déjà décodés. L'utilisation de urldecode() sur un élément de $_GET Ou $_REQUEST Peut avoir des résultats inattendus et dangereux.

lien: http://php.net/manual/en/function.urldecode.php

faites attention.

0
Jamal Azizbeigi