6

重複の可能性:
POST 変数を使用した PHP header() リダイレクト

フォーム データが別のスクリプトに送信されるスクリプトを作成しています。2 番目のスクリプトで、送信されたデータに対してエラー チェックを実行し、$_POST問題がなければデータを処理します。データにエラーがある場合はheader('Location: http://www.example.com/script.php');、訪問者をフォーム ページに戻すために使用しています。

私が抱えている問題は、フォームを固定したいということです-正しいデータを持つフィールドは、ユーザーが入力した値を維持します。明らかに、これらの値を取得するには、$_POST配列にアクセスする必要があります。header()ただし、呼び出しが訪問者をフォームに転送すると、これは破棄されるようです。

データを保持しながら、ヘッダー Location を使用して訪問者を別のページにリダイレクトする方法はあり$_POSTますか?

今、私はこのように使用しています:header('Location: http://www.example.com/add.php?id='.$id.'&name='.$name.'&code='.$code.'&desc='.$description.'');そしてとしてアクセスしてい$_GETます。

header('location: xxx')同じために、 ??でPOSTの種類を使用できます

4

3 に答える 3

15

この「スティッキー フォーム」を実現する最善の方法は、セッションを使用することです。

<?php
session_start();
$_SESSION = $_POST;
//do error checking here
//if all is valid
session_write_close();
header('Location: *where you want your form to go*');
die;
?>

リダイレクトページでは、次のように使用できます。

<?php
session_start();
//use $_SESSION like you would the post data
?>
于 2012-08-31T10:32:52.493 に答える
3

$_POSTセッションにデータを保存できます。

session_start();
$_SESSION['submitted_data'] = $_POST;

次に、変数から値をロードして入力に値をロードします。エラーページの上部に$_SESSION['submitted_data']もあることを忘れないでください。session_start()

于 2012-08-31T10:31:02.463 に答える
0

そのためにセッションを使用します。フォームページ:

<?php
if (!empty($_COOKIE[session_name()])) {
    // we only start session if there is a session running
    session_id() || session_start();
}

if (empty($_POST) && !empty($_SESSION['POST'])) {
    // make sure you're not overwriting
    $_POST = $_SESSION['POST'];
}
// and so on just like you have $_POST filled

$_POST データを受け取るスクリプトでは:

<?php
// after you're done with checking and stuff
session_id() || session_start();
$_SESSION['POST'] = $_POST;
header('Location: /script.php');

セッションが機能するには、両方のスクリプトが保存ドメインにある必要があります。Locationヘッダーで相対 URI を使用している場合は、すべて正常に動作するはずです。

于 2012-08-31T10:35:41.210 に答える