フォームが送信される前に (次のページに)、テキスト フィールドに少なくとも 1 文字が入力されていることを確認するために、HTML フォームをチェックするものを設定しようとしています。
HTML フォームは 1 ページにあり、2 ページ目に流れます。次に、2 ページ目がテキスト ファイルを更新します。そのままではうまくいかないので、変更したくありません。しかし、必要なのはバリデータです。
多数の提案を検索して読み、ISSET を使用するためのいくつかの提案を確認し、以下のスクリプトを実行しました。
しかし、これは機能しません (フォームは常に送信されるため、エラー メッセージは表示されません)。私は他の多くの提案にうんざりしています(私が読んだ他のチュートリアルに基づいています)。しかし、テキスト フィールドが空かどうかに関係なく、フォームは常に送信されるようです。(次のページにタイムスタンプがあるので、何が送信されたかがわかります。
この場合、Isset が機能するかどうか教えてもらえますか? もしそうなら、私が間違っているところ。そうでない場合は、テキスト フィールドのバリデータを取得するために使用できるもの。これにはPHPを使用したいのですが、Javascriptを使用する必要がある場合は可能です。
(追加: 問題は、以下の $error メッセージが発生した場合でも、送信ボタンを介してページが自動的にリダイレクトされるため、表示されないことだと思います。イベント ハンドラーと同様に必要なもの - たとえば、ボタン送信の場合)がクリックされたら、エラーをチェックします。エラーがある場合は、印刷します。エラーがない場合は、フォームを送信します。このコードはそれを行いません)。
ページ 1 のコード。
<?php
if (isset($_POST['submit'])) {
$error = '';
if (trim($_POST['topic']) == '') {
$error = "Please enter a topic<br>");
}
if (trim($_POST['outline']) == '') {
$error = "Please enter an outline<br>";
}
if ($error == '') {
Echo "There are no errors";
} else {
echo "$error";
}
}
?>
<form style="" method="post" action="addtopic2.php">
Topic:<input name="topic" id="topicbox" maxlength="100" type="text">
Outline: <textarea input wrap="nowrap" rows="10" cols="120" name="outline">
</textarea><br><input name="submit" value="Submit" type="submit">
</form>
ページ 2 コード
<?php
$b = time ();
$c = date("g:i:s A D, F jS Y",$b);
print "Topic and Outline Submitted at $c";
$t = "Topic:";
$o = "Outline:";
$d = "Time Date:";
$topic = $_POST['topic'];
$outline = $_POST['outline'];
$data = stripslashes("$t $topic | $o $outline | $d $c |\n");
$fh = fopen("users.txt", "a");
fwrite($fh, $data);
fclose($fh);
?>