2012-08-03 4 views
12

Otrzymuję wartości w ciągu GET od Aweber po przesłaniu formularza przez użytkownika. Biorę zmienne, które wysyłają i przesyłam je do bramki SMS, aby powiadomić stronę trzecią o przesłaniu wiadomości SMS.Jak przekazywać zmienne otrzymane w łańcuchu GET przez przekierowanie nagłówka php?

Oto mój problem. Muszę przekierować stronę, która wykonuje wychodzące polecenia SMS w nagłówku php na inną stronę, która w końcu wyświetla zmienne GET wysłane z Awebera.

Mogę pobrać zmienne i ich wartości na pierwszej stronie. Jak przekazać je na drugą stronę?

Oto kod używam na pierwszej stronie (sms.php) do zbierania zmiennych wysyłanych przez Aweber:

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

    header('Location: confirmed.php'); 
    exit; 

Odpowiedz

15
session_start(); 
$_SESSION['fname'] = $_GET['name']; 
$_SESSION['femail'] = $_GET['email']; 
$_SESSION['fphone'] = $_GET['telephone']; 
....etc 

header('Location: confirmed.php'); 

i dostać go na następnej stronie jak:

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

.... itd

+1

Działa jak urok! Chociaż @ Yan zasadniczo zasugerował to samo, doceniam twoje szczegółowe wyjaśnienie (które pomogło nowicjuszowi;) – user1322707

+2

Lub po prostu '$ _SESSION ['get'] = $ _GET;' – rybo111

2

przechowywać je w session:

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

użytkowania session_start na początku każdego pliku.

11

Nie trzeba je przechowywać w sesji, można łatwo przekazać im nagłówek twojej lokalizacji:

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

W pliku confirm.php możesz pobrać te zmienne za pomocą metody $ _GET.

+0

Hmmm, próbowałem tego rozwiązania przed opublikowaniem pytania tutaj i wszystkich Otrzymałem '. $ Fname' na stronie confirmed.php podczas jej wysyłania zamiast rzeczywistej wartości w łańcuchu GET – user1322707

+0

Czy możesz umieścić swój kod php z nagłówkiem (" location ...) w nim i potwierdzić .php gdzie próbujesz to powtórzyć? –

+0

Używałem tego samego '$ fname = $ _ GET ['name'];' na obu stronach, ponieważ parametry obu ciągów były takie same, tj. 'name = value' – user1322707

24

najpierw przekonwertować zmienną $_GET HTTP w ciągu kwerendy przy użyciu

$query = http_build_query($_GET); 

Następnie dołączyć zmienną łańcucha zapytania do nagłówka przekierowania

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

Gotowe.

+0

jeśli masz '? Wartość = 4% 2e20' zmieni się na'? Wartość = 4.20 ?. A później '$ _POST ['amount_value'] == 4.20' zwróci wartość false. –

+0

Co powiesz na to: '$ query = urlencode (http_build_query ($ _ GET));' –

2

Proszę, dla każdego, kto to czyta w przyszłości, używaj sesji dla tego rodzaju transferu wartości zmiennej, ponieważ jeśli polegasz głównie na dodawaniu zmiennej do nagłówka, to jeśli użytkownik nadal w tej formie i wykonuje akcję, która zmienia wartość w nagłówku zmienia się twoja zmienna wartość, ponieważ zależy to od nagłówka ...... po prostu wpisz, WYKORZYSTAJ SESJE.

1

Najlepsze co możesz zrobić, to umieścić wszystkie swoje zmienne POST do sesji tak:

Na page1.php put:

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

I na page2.php put (Jeśli na page1.php używamy zwykłego formularza POST przesłać z formularza 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']); 

Lub na stronie2.php put: (Jeśli na stronie1.php używamy siebie złożyć z formularza action="<?php echo htmlspecialchars($_SERVER['PHP_SELF']); ?> a następnie użyć header("Location: page2.php"); aby przejść do page2.php i przekazać nasze zmienne POST poprzez sesji)

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

dosłownie godzinami ilość objętą że z powodu wszystkich forach błędnie lub niekompletnie.

Teraz jest to tak proste jak zwykłe wywoływanie zmiennych, które przekazałeś z page1.php jak na przykład: <b>Points: </b><?php echo $points; ?> i to wszystko !!

Podczas umieszczania header('Location: page2.php'); w stanie if należy się upewnić, że będzie on znajdować się w pierwszym skrypcie PHP strony i powyżej dowolnego wyjścia HTML.

0

Działa to skorzystać z tej sentex

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

2

Spróbuj tego (to działało idealnie dla mojego użytku):

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

Jeśli to działa, dla Ciebie, pamiętaj upvote!

Powiązane problemy