wake-up-neo.com

Wie übergeben Sie in GET-String empfangene Variablen über eine PHP-Header-Weiterleitung?

Ich erhalte Werte in einer GET-Zeichenfolge von Aweber, wenn der Benutzer ein Formular einreicht. Ich nehme die von ihnen gesendeten Variablen und sende sie an ein SMS Gateway, um eine dritte Partei per SMS über die Übermittlung zu informieren.

Hier ist mein Problem. Ich muss die Seite, die die ausgehenden SMS -Befehle in einem PHP-Header ausführt, auf eine andere Seite umleiten, auf der schließlich die von Aweber gesendeten GET-Variablen angezeigt werden.

Ich kann die Variablen und ihre Werte auf der ersten Seite abrufen. Wie kann ich sie an die zweite Seite übergeben?

Hier ist der Code, den ich auf der ersten Seite (sms.php) verwende, um die von Aweber gesendeten Variablen zu sammeln:

   $fname   = $_GET['name'];
   $femail  = $_GET['email'];
   $fphone  = $_GET['telephone'];
   ....etc

   header('Location: confirmed.php');
   exit;
12
user1322707
session_start();
$_SESSION['fname']   = $_GET['name'];
$_SESSION['femail']  = $_GET['email'];
$_SESSION['fphone']  = $_GET['telephone'];
....etc

header('Location: confirmed.php');

und erhalt es auf der nächsten Seite wie:

session_start();
$fname   = $_SESSION['fname'];
$femail  = $_SESSION['femail'];
$fphone  = $_SESSION['fphone'];

....usw

15
Kalpesh

Konvertieren Sie zuerst die $_GET-HTTP-Variable in eine Abfragezeichenfolge mit

$query = http_build_query($_GET);

Hängen Sie dann die Abfragezeichenfolgevariable an Ihren Umleitungsheader an

header('location: domain.com'."?".$query);

Erledigt.

24
user1464296

Sie müssen sie nicht in einer Sitzung speichern. Sie können sie problemlos mit Ihrem Standortkopf übergeben:

$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);

In confirm.php können Sie diese Variablen mit der Methode $ _GET erhalten.

11
Djerro Neth

Versuche dies. Es hat perfekt für mich funktioniert.

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');
};
2

Für alle, die dies in Zukunft lesen, verwenden Sie bitte Sitzungen für diese Art der Übertragung von Variablenwerten. Wenn Sie sich also hauptsächlich auf das Hinzufügen von Variablen zum Header verlassen, ist der Benutzer noch in diesem Formular und führt eine Aktion aus, die den Wert des Headers ändert Der Wert der eigenen Variablen ändert sich, da er von der Kopfzeile abhängt ...... einfach "USE SESSIONS".

2
david.ee

Speichern Sie sie in der Sitzung :

 $_SESSION['fname'] = $_GET['name'];

Verwenden Sie session_start am Anfang jeder Datei.

2
Yan Berk

Das Beste, was Sie tun können, ist, alle Ihre POST - Variablen in eine Sitzung wie folgt zu setzen:

Auf page1.php setzen:

//Start the session
session_start();
//Dump your POST variables
$_SESSION['post-data'] = $_POST;

Und auf page2.php setze: (Wenn auf page1.php wir ein normales POST Formular verwenden, sende mit dem Formular 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']);

Oder auf page2.php setze: (Wenn auf page1.php wir selbst mit Formular action="<?php echo htmlspecialchars($_SERVER['PHP_SELF']); ?> senden und dann mit header("Location: page2.php"); zur page2.php gehen und unsere POST - Variablen über eine Sitzung übergeben)

//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']);

Ich habe buchstäblich Stunden damit verbracht, das herauszufinden, weil es in allen Foren falsch oder unvollständig ist.

Jetzt ist es so einfach, die Variablen, die Sie aus page1.php übergeben haben, einfach so aufzurufen: <b>Points: </b><?php echo $points; ?> und fertig!

Wenn Sie die header('Location: page2.php'); in einer if-Bedingung usw. positionieren, stellen Sie sicher, dass sie sich im ersten PHP -Skript der Seite und oberhalb der HTML-Ausgabe befindet.

1
Jaro

Dies funktioniert mit diesem Sentex 

header ('location: member_dashboard.php? id ='. $ id);

0
Adnan