web-dev-qa-db-ja.com

GET文字列で受け取った変数をPHPヘッダーリダイレクト経由で渡す方法は?

ユーザーがフォームを送信すると、AweberからGET文字列で値を受け取ります。送信する変数を受け取り、SMSゲートウェイに送信して、サードパーティに送信をテキストメッセージで通知します。

これが私の問題です。 phpヘッダー内の発信SMSコマンドを実行するページを、Aweberから送信されたGET変数を最終的に表示する別のページにリダイレクトする必要があります。

最初のページで変数とその値を取得できます。それらを2番目のページに渡すにはどうすればよいですか?

Aweberから送信された変数を収集するために最初のページ(sms.php)で使用しているコードは次のとおりです。

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

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

header('Location: confirmed.php');

次のページで入手してください:

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

....等

16
Kalpesh

最初に$_GET HTTP変数をクエリ文字列に変換します

$query = http_build_query($_GET);

次に、リダイレクト文字列にクエリ文字列変数を追加します

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

できた.

24
user1464296

セッションに保存する必要はありません。ロケーションヘッダーで簡単に渡すことができます。

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

Confirm.phpでは、これらの変数を$ _GETメソッドで取得できます。

10
Djerro Neth

これを試して。それは私にとって完璧に機能しました。

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

将来これを読んでいる人は、この種類の変数値転送にセッションを使用してくださいヘッダーに依存するため、独自の変数値が変更されます......簡単に言えば、USE SESSIONSです。

2
david.ee

それらを session に保存します。

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

使用する session_start各ファイルの先頭。

2
Yan Berk

できる最善の方法は、すべてのPOST変数を次のようなセッションに入れることです。

page1.phpにput:

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

そしてpage2.phpで:(page1.phpで通常のPOSTフォーム送信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']);

またはpage2.phpでput:(page1.phpでaction="<?php echo htmlspecialchars($_SERVER['PHP_SELF']); ?>の形式の自己送信を使用し、header("Location: page2.php");を使用してpage2.phpに移動して、POSTセッション経由で変数を渡します

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

すべてのフォーラムが間違っているか不完全であるため、私は文字通りそれを理解するのに何時間も費やしました。

これで、たとえば<b>Points: </b><?php echo $points; ?>のように、page1.phpから渡した変数を呼び出すだけで簡単になりました。

header('Location: page2.php');if状態などに置くときは、それがページの最初のPHPスクリプトおよびHTML出力の上にあることを確認してください。

1
Jaro

これはこのセンテックスを使用します

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

0
Adnan