2013-04-23 7 views
7

私は、登録ページ(go-gold.php)から要約/確認ページ(go-gold-summary.php)に変数を正常に渡す登録フォームを作成しました。データは2ページ目に正しく表示されます。ページ間でPHP変数を送信する

ただし、ユーザーが入力エラーを起こした場合は、画像ボタンを使用して登録ページに戻ることができます。元のフォームには、最初に入力したデータが入力されます。

問題は、最初のページに戻って2番目のページからデータを再送信/返すことができないことです。私のテキストフィールドは空白に見えます。 私はセッション変数を使いたくありません。

コードはページ全体から切り捨てられています。

登録ページ(行く-gold.php):

<?php 
$customer_name = $_POST['customer_name']; 
?> 

<form action="go-gold-summary.php" method="post"> 

Name: <input type="text" name="customer_name" id="customer_name" value= "<?php echo $customer_name ?>" /> 
<input name="<?php echo $customer_name ?>" type="hidden" id="<?php echo $customer_name ?>"> 

</form> 

概要ページ(行く - 金 - summary.php)

<?php 
$customer_name = $_POST['customer_name']; 
?> 

<form action="go-gold.php" method="post"> 

Name: <?php echo $customer_name ?> <input type="hidden" id="<?php echo $customer_name ?>" name="<?php echo $customer_name ?>"> 

<INPUT TYPE="image" src="images/arrow_back.png" id="arrow" alt="Back to Registration"> (Button to go back to Registration Page) 

</form> 

ありがとう!

+3

私は '$ _SESSION'がなぜオフリミットであるのか尋ねますか? – svidgen

答えて

2

go-gold-summary.phpはこのように変更する必要があります。

<?php 
$customer_name = $_POST['customer_name']; 
?> 

<form action="go-gold.php" method="post"> 

Name: <?php echo $customer_name ?> <input type="hidden" value="<?php echo $customer_name ?>" name="customer_name"> 

<INPUT TYPE="submit" src="images/arrow_back.png" id="arrow" alt="Back to Registration"> (Button to go back to Registration Page) 

</form> 

私はこの

<input type="hidden" value="<?php echo $customer_name ?>" name="customer_name"> 

$ _POSTを連想配列で、フォームを送信すると、それは次のように読み込まれますに

<input type="hidden" id="<?php echo $customer_name ?>" name="<?php echo $customer_name ?>"> 

この行を変更したことに注目してください:

$_POST["index"] = value; 

ここで、"index"はテキストフィールド "name"、valueはテキストフィールド値です。

あなたのコードではこれが欠けています。私のコードで更新すればうまくいくでしょう。

+0

華麗な、完璧に働いた、ありがとう! –

+0

今後も同様の問題が発生した場合は、var_dump($ _ POST);と書いてみてください。あなたのPHPドキュメントの一番上に、あなたは間違ったことをやっている理由と場所を知ることができます。 – Saturnix

0

ページ間で変数を維持する方法はほとんどありません。もう1つの方法は、$ _POSTデータを含む非表示のテキストフィールドで2番目のページに別のフォームを作成し、送信ボタンで前のページを呼び出す方法です。残念ながらブラウザ上で "戻るボタン"を回す方法はありません。

私は、セッション変数に関する太字逃した - これが適用されない場合は無視します。サーバー側でページ間の変数を維持するために

一つの方法は、最初の$ _SESSION

を使用することですあなたが提出し、2ページに移動し、追加すると

session_start(); 

:アクティブなセッションを維持するために、あなたのPHPページの最上部に以下のものが含まれます同様

$_SESSION['customer_name'] = $_POST['customer_name']; 

を、最初のページに、あなたのようなフォーム要素を変更することができます::以下

<input type="text" name="customer_name" value="<?PHP if isset($_SESSION['customer_name'] || !empty($_SESSION['customer_name'])) { echo $_SESSION['customer_name']; } ?>"> 

これはデータに充填を維持し、ユーザーが自分のページTOT返すときにそれを表示します。彼らが何か別のものを置くと、2ページ目に再びヒットしたときに更新されます。

1

なぜPHPセッションを使いたくないのですか?それを使用しない理由があれば教えてください。私は私の評判が私自身のもの以外の質問や答えをコメントすることを許さないので、この方法を求めています。これは-1ではありません。

もう1つの方法は、データを一時的に保存することですが、ポストリクエストでデータを前後に投稿することは、セッションに比べて本当に安全ではありません。

関連する問題