2012-08-31 16 views
5

可能性の重複:
PHP header() redirect with POST variablesPHPヘッダー場所

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

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

$_POSTのデータを保存している間に、訪問者を別のページにリダイレクトするためにヘッダーの場所情報を使用する方法はありますか?

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

header('location: xxx')で同じ種類のPOSTを使用していますか?

+0

http://www.php.net/manual/en/book.session.php – DaveRandom

+0

[$ _POST]を手動で設定することもできます(http://stackoverflow.com/questions/3418044/setting-post- variable-without-using-form)をリダイレクトする前にもう一度実行してください。 – Havelock

+0

投稿データを保存するためにセッション変数を設定しないのはなぜですか? ? – kushalbhaktajoshi

答えて

2

あなたはセッションで$_POSTデータ格納することができ:

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

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

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 
?> 
0

使用sessions。 $ _POSTデータを受信するスクリプトで

<?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 

:フォームページでは

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

どちらのスクリプトが動作するセッションのために保存したドメイン上にある必要があります。 の位置ヘッダーで相対URIを使用している場合は、すべて正常に動作するはずです。

関連する問題