Две формы конфликтуют друг с другом
Я разместил две формы на одной странице. Обе формы отлично работают отдельно, но когда они размещаются на одной странице одновременно, они конфликтуют друг с другом. Вот обе формы:
Форма обратной связи:
<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"?
3 ответа
Я предполагаю, что, поскольку вы показываете необходимые файлы на основе тех же критериев isset($_POST['name'])
и так как обе формы имеют name
поле, в котором вы в конечном итоге показывает код в обоих случаях, независимо от того, какая форма отправлена Вы должны просто изменить имена полей формы на одной из форм, чтобы они отличались.
Обе формы имеют один и тот же атрибут действия, они обе указывают на одну и ту же страницу (обратите внимание, что хэш не отправляется на сервер). Поскольку у них обоих есть поле под названием name
и вы проверяете это, оба действия выполняются независимо от того, какая форма была отправлена.
Вы можете сделать либо:
- использовать разные скрипты / обработчики форм (не публиковать на той же странице)
- используйте разные проверки для каждой формы, например, добавив скрытый ввод, который позволит вам различать формы.