0

1 ページに 2 つのフォームを配置しました。両方のフォームは個別に正常に機能しますが、1 つのページに同時に配置すると、互いに競合します。両方の形式を次に示します。

お問い合わせフォーム:

<form name="contactform" id="contactform" method="post" action="#targetAnchorPage2">
<table>
<?php
if (isset($_POST["name"])){
?>
<tr>
 <td colspan="2" class="error">
 <?php
 require_once("contact_send.php");
 ?>
 </td>
</tr>
<?php
}
?>

<tr><td><label for="name" class="<?=$name_class?>">name:</label></td><td><input  type="text" name="name" maxlength="50" value="<?=$name?>"></td></tr>
<tr><td><label for="email" class="<?=$emailaddress_class?>">email:</label></td><td><input  type="text" name="email" maxlength="80" value="<?=$emailaddress?>"></td></tr>
<tr><td colspan="2"><label id="tworows" for="message" class="<?=$message_class?>">your message:</label></td></tr><tr><td colspan="2"><textarea  name="message" cols="22" rows="6" value="<?=$message_class?>"></textarea>
 </td></tr>

<tr>
 <td colspan="2" style="text-align:center"><br /><input class="button" type="submit" value="">   
 </td>
</tr>

</table>
</form>

購読フォーム:

<form name="subscribeform" id="subscribeform" method="post" action="#targetAnchorPage3">
<table>
<?php
if (isset($_POST["name"])){
?>
<tr>
 <td colspan="2" class="error">
 <?php
 require_once("subscribe_send.php");
 ?>
 </td>
</tr>
<?php
}
?>

<tr><td><label for="name" class="<?=$name_class?>">name:</label></td><td><input type="text" name="name" maxlength="50" value="<?=$name?>"></td></tr>
<tr><td><label for="email" class="<?=$emailaddress_class?>">email:</label></td><td><input type="text" name="email" maxlength="80" value="<?=$emailaddress?>"></td></tr>

<tr>
 <td colspan="2" style="text-align:center"><br /><input class="button" type="submit" value="">   
 </td>
</tr>

</table>
</form>

これはどのように解決できますか?「required_once」コマンドが原因ですか?

4

2 に答える 2

2

同じ基準に基づいて必要なファイルを表示していisset($_POST['name'])て、両方のフォームにnameフィールドがあるため、どちらのフォームが送信されたかに関係なく、両方の必須ファイルにコードが表示されると推測しています。フォーム上でフォーム フィールド名を異なるものに変更する必要があります。

于 2013-01-15T16:17:21.820 に答える
0

どちらのフォームも同じアクション属性を持ち、どちらも同じページを指しています (ハッシュはサーバーに送信されないことに注意してください)。どちらにもというフィールドがnameあり、それをチェックしているため、送信されたフォームに関係なく、両方のアクションが実行されます。

次のいずれかを実行できます。

  • 異なるスクリプト/フォーム プロセッサを使用する (同じページに投稿しないでください)
  • たとえば、フォームを区別できる隠し入力を追加するなど、フォームごとに異なるチェックを使用します。
于 2013-01-15T16:19:05.627 に答える