addToDb.phpの中にheredoc形式(下に表示)があります。ユーザーがフォームの送信ボタンをクリックすると、フォームはaddToDb.phpにポストバックします(下のフォームの「ADD RECORD」ボタン)。投稿/リダイレクト/取得シナリオでheader()と干渉するheredoc
私はフォーム上に大丈夫なデータがあることを確認した後、データベースにデータを追加し、303のリダイレクトにheader()を使用します(これはpost/redirect/getを使用する私の最初の試みです)。
私はエラーを取得する:
「警告:ヘッダー情報を変更することはできません - すでにによって送られたヘッダCに(出力がCで始まっ:165:\ xamppの\ htdocsに\ fooという\ addToDb.php):\ XAMPP \ htdocsに\ FOO \ addToDb.phpライン129上及びCで:\ XAMPP \ htdocsに\ FOO \ addToDb.phpライン130" 上の
echo <<<_END
<h1>Please add a new student....</h1>
<p>Fields with an asterisk (*) are required fields.</p>
<form action="addToDb.php" method="post">
<b><i>First name *</b></i> : <input type="text" name=$firstNameLabel /><br />
Middle initial : <input type="text" name=$middleInitialLabel /><br />
<b><i>Last name *</b></i> : <input type="text" name=$lastNameLabel /><br />
<b><i>School*</i></b> : <input type="text" name=$schoolLabel size=40/><br />
Grade: <input type="text" name=$gradeLabel /><br />
<b><i>Email *</b></i> : <input type="text" name=$emailLabel size=40 /><br />
<input type="submit" name="addrecord" value="ADD RECORD" /><br />
</form>
_END;
*(注:ヒアドキュメントを閉じて上記_END、 addToDb.phpの165行目に表示されます。このエラーメッセージには165行目が記載されています)。*
したがって、[レコードを追加]ボタンを押すと、同じaddToDb.phpファイルが再度入力され、上記と同じフォームが再度表示されます。
// check for valid form data and add to the database, then redirect now.........
header("HTTP/1.1 303 See Other");
header("Location: http://localhost/foo/index.php");
exit();
を次のように
addToDb.phpが原因提出に再入力され、I)は、(ユーザーが入力し、有効な形式のデータをチェックし、それが有効なデータと通話ヘッダだ場合は、データベースに保存します
(注:2つの呼び出し上記のヘッダにはaddToDb.php内の線129と130に表示されます)
だからここに何が起こるかです:
-
私はプッシュ
- 有効なデータでフォームに記入
- は、フォームが、私は再入力addToDb.php
- として再表示されている
- を「レコードを追加」私のレコードがデータベースに正常に追加しましたが、取得します。 .....
- 私は、ブラウザでのindex.phpが表示されていない、私はまだaddToDb.php
- を参照して、上述と以下の繰り返しのように、私はエラーメッセージが表示されます:
「警告:ヘッダー情報を変更できません - 既にヘッダーC:\ xampp \ htdocs \ foo \ addToDb.phpの129行目とC:\ xampp \ htdocs \ foo \ addToDbに送信されます(C:\ xampp \ htdocs \ foo \ addToDb.php:165で開始された出力)。 php on line 130 "
私は以前は問題なしでheredocの手法を使用していました。
しかし、これは私の人生ではじめて、Post/Redirect/Getを実装しようとしています。
だから、私のPRGに何らかの形で干渉しているヘレドックはありますか?
それは私をしました。ありがとう。すべてのデバッグエコーと他のすべての出力を削除すると直ちに、リダイレクトはindex.phpに有効でした。私はさらにvar_dump()呼び出しを削除しなければならなかった。 – wantTheBest
喜んで助けてください。 :) – vdbuilder