Je reçois des valeurs dans une chaîne GET d'Aweber lors de la soumission d'un formulaire par l'utilisateur. Je prends les variables qu'ils envoient et les soumets à une passerelle SMS pour informer une tierce partie de la soumission par SMS.
Voici mon problème. Je dois rediriger la page qui exécute les commandes SMS sortantes dans un en-tête php vers une autre page qui affiche enfin les variables GET envoyées par Aweber.
Je peux récupérer les variables et leurs valeurs dans la première page. Comment puis-je les passer à la deuxième page?
Voici le code que j'utilise sur la première page (sms.php) pour collecter les variables envoyées par Aweber:
$fname = $_GET['name'];
$femail = $_GET['email'];
$fphone = $_GET['telephone'];
....etc
header('Location: confirmed.php');
exit;
session_start();
$_SESSION['fname'] = $_GET['name'];
$_SESSION['femail'] = $_GET['email'];
$_SESSION['fphone'] = $_GET['telephone'];
....etc
header('Location: confirmed.php');
et l'obtenir sur la page suivante comme:
session_start();
$fname = $_SESSION['fname'];
$femail = $_SESSION['femail'];
$fphone = $_SESSION['fphone'];
....etc
Commencez par convertir la variable HTTP $_GET
en une chaîne de requête à l'aide de
$query = http_build_query($_GET);
Puis ajoutez la variable de chaîne de requête à votre en-tête de redirection
header('location: domain.com'."?".$query);
Terminé.
Vous n'avez pas besoin de les stocker dans une session, vous pouvez facilement les transmettre avec votre en-tête d'emplacement:
$fname = $_GET['name'];
$femail = $_GET['email'];
$fphone = $_GET['telephone'];
//now a header with these var's:
header("Location: confirmed.php?name=".$fname."&email=".$femail."&telephone=".$fphone);
Dans confirm.php, vous pouvez obtenir ces variables avec la méthode $ _GET.
Essaye ça. Cela a fonctionné parfaitement pour moi.
if ($_GET)
{
$query = str_replace("%3D", "=", str_replace("%26", "&", strval(urlencode(http_build_query($_GET)))));
header('location: https://www.example.com'.'?'.$query);
}
else
{
header('location: https://www.example.com');
};
S'il vous plaît, si vous lisez ceci à l'avenir, utilisez des sessions pour ce type de transfert de valeur de variable, car si vous comptez principalement ajouter une variable à l'en-tête, si l'utilisateur reste toujours sur ce formulaire et effectue une action qui modifie la valeur de l'en-tête, La valeur de votre propre variable change, car elle dépend de l'en-tête ...... simplement, USE SESSIONS.
Stockez-les dans la session :
$_SESSION['fname'] = $_GET['name'];
Utilisez session_start
au début de chaque fichier.
Le mieux que vous puissiez faire est de placer toutes vos POST variables dans une session comme celle-ci:
Sur page1.php, mettez:
//Start the session
session_start();
//Dump your POST variables
$_SESSION['post-data'] = $_POST;
Et sur page2.php put: (Si sur page1.php, nous utilisons un formulaire POST normal, soumis avec le formulaire action="page2.php
")
//Start the session
session_start();
//Access your POST variables
foreach ($_POST as $key => $value) {
${$key} = $value;
$_SESSION[$key] = $value;
}
//Unset the useless session variable
unset($_SESSION['post-data']);
Ou sur page2.php put: (Si sur page1.php, nous utilisons une auto-soumission avec le formulaire action="<?php echo htmlspecialchars($_SERVER['PHP_SELF']); ?>
, puis une header("Location: page2.php");
pour passer à la page2.php et transmettre nos variables POST via une session)
//Start the session
session_start();
//Access your POST variables
$_POST = $_SESSION['post-data'];
foreach ($_POST as $key => $value) {
${$key} = $value;
$_SESSION[$key] = $value;
}
unset($_SESSION['post-data']);
J'ai littéralement passé des heures à comprendre cela parce que tous les forums le disaient faux ou incomplet.
Maintenant, il vous suffit d'appeler les variables que vous avez transmises à partir de page1.php, par exemple: <b>Points: </b><?php echo $points; ?>
et c'est tout!
Lorsque vous placez la header('Location: page2.php');
dans une condition if
, etc., assurez-vous qu'elle figurera dans le premier script PHP de la page et au-dessus de toute sortie HTML.
Cela fonctionne utiliser ce sentex
en-tête ('location: member_dashboard.php? id ='. $ id);