0

フォームを送信する前に誰かが入力したかどうかを検証しようとしているテキストエリアがあります。私はすべての検証サーバー側をPHPで実行しています。

私は2つの考えを持っていました。また:

1)フォームを自分自身に送信し、フィールドが同じページで自分自身を検証してから、フォームがデータベースを更新するページにリダイレクトします。私が抱えていた問題は、それ自体に投稿していたため、ページがリダイレクトされると、POST値が無効になったため、それらを使用できなくなったことでした。

2)2ページ目(フォームが最初に投稿するように設定されているページ)で検証を行うだけだと思いました。そのページのコードは次のとおりです。「description」はテキストエリアの名前です。

session_start();
if(!$_POST['description']){
echo "<script>alert(\"Please fill out all fields\");</script>";
header("location:post_job.php");
}

次に、フォームが入力されているページにリダイレクトされます。ただし、このエラーが発生します。

Warning: Cannot modify header information - headers already sent by (output started at siteinfo/site/checkjob.php:4) in siteinfo/site/checkjob.php on line 5

5行目はヘッダー行です(したがって、4行目は明らかにエコー行です)。まだヘッダーを送信していないので、なぜそのエラーが発生するのかわかりません。どんな助けでも大歓迎です。ありがとう!

4

2 に答える 2

1

これを試して

session_start();
if(!$_POST['description']){
echo "<script>alert(\"Please fill out all fields\");";
echo "window.location.href='post_job.php';";
echo "</script>";
}

私はあなたがあなたのメッセージを表示することを意図している方法を追加しなければなりませんが、良い方法ではありません。フォームを送信する前にAjaxまたはjavascriptを使用して検証することは、従うのに適したルートです。クライアントのシステムでjavascriptが無効になっている場合のバックアップ計画として、この方法を維持してください。

于 2012-11-08T06:39:41.527 に答える
0

タグが含まれるエコーは、ブラウザに出力を送信します。代わりに、スクリプトタグ内でリダイレクトするJavaScriptの方法を使用してください。

于 2012-11-08T06:39:04.713 に答える