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.
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
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;
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.
Votre première déclaration variable doit commencer par un ?
tandis que tout élément supplémentaire doit être concaténé avec un &
uRL à variable unique
uRL à plusieurs variables
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 :)
<a href="deleteshare.php?did=<?php echo "$rowc[id]"; ?>&uid=<?php echo "$id";?>">DELETE</a>
Passer plusieurs variables d'une page à une autre page
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
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;
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.