我的网站有两个联系表单(一个是模态可用,另一个是页面底部)。两种形式都具有相同的结构,例如相同的输入和名称等......它们都具有相同的动作方法。
我的问题是 - 如何在$ _POST变量依赖于提交的表单的两个表单上使用相同的操作方法?例如,如果我填写第二个联系表单,该操作将从第一个联系表单中获取数据。
我认为一种方法是给两个表单不同的id,例如firstForm和secondForm,然后将表单的id作为参数传递给action方法。虽然这可行,但我不确定它是否是一种有效的方式,或者是否有更简单的方法?
我完全无视这样一个事实,即我实际上可以制作两个单独的动作方法,但这只是荒谬和大量冗余编程,当我知道我可以只有一个动作方法来提供两种形式,但我只是在失去了如何正确实施它。
这是第一个:
<div id="myModal" class="modal fade" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true">
<div class="modal-dialog" >
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button>
<h3 id="myModalLabel">Flick me an email!</h3>
<p>I will get back to you ASAP!</p>
</div>
<div class="modal-body">
<div class="status alert alert-success" style="display: none"></div>
<form id="main-contact-form" class="contact-form" name="contact-form" method="post" action="assets/php/sendemail.php">
<div class="form-group"><input class="form-control required" type="text" name="name" placeholder="Name" data-placement="top"></div>
<div class="form-group"><input class="form-control email" type="email" name="email" placeholder="example@email.com" data-placement="top" ></div>
<div class="form-group"><textarea class="form-control" name="message" placeholder="Your message here.." data-placement="top" style="height: 200px;" ></textarea></div>
<div class="form-group"><button type="submit" id="modal-submit" class="btn btn-danger btn-lg">Send Message</button><button class="btn" data-dismiss="modal" aria-hidden="true" style="float: right;">Cancel</button> </div>
</form>
</div>
</div>
</div>
</div>
第二个:
<form id="main-contact-form" class="contact-form" name="contact-form" method="post" action="assets/php/sendemail.php">
<div class="row">
<div class="col-sm-6">
<div class="form-group">
<input type="text" name="name" class="form-control" required="required"
placeholder="Name">
</div>
</div>
<div class="col-sm-6">
<div class="form-group">
<input type="email" name="email" class="form-control" required="required"
placeholder="Email address">
</div>
</div>
</div>
<div class="row">
<div class="col-sm-12">
<div class="form-group">
<textarea name="message" id="message" required="required" class="form-control"
rows="8" placeholder="Message"></textarea>
</div>
<div class="form-group">
<button type="submit" id="submit" class="btn btn-danger btn-lg">Send Message
</button>
</div>
</div>
</div>
</form>
答案 0 :(得分:1)
在每个表单中,您都可以在<form>
... </form>
标记之间添加隐藏的输入元素,以指示正在提交的表单。
在你的第一个表格中你可以有这个元素:
<input type="hidden" name="type" value="form1">
然后在第二个表单中添加此元素
<input type="hidden" name="type" value="form2">
提交表单时,接收PHP脚本可以将类型值读取为可以作用的post变量,例如,
if ($_POST['type']=='form1') {
// Do this
} else if ($_POST['type']=='form2') {
// Do this instead
}
也许你不想要添加隐藏的输入,你可以在表单动作的GET字符串中添加一个参数。
因此,在您的第一个表单中,您可以执行此操作 - 在操作结束时添加?type=form1
:
<form id="main-contact-form" class="contact-form" name="contact-form" method="post" action="assets/php/sendemail.php?type=form1">
并且,在您的第二个表单中,您可以执行此操作 - 在操作结束时添加?type=form2
:
<form id="main-contact-form" class="contact-form" name="contact-form" method="post" action="assets/php/sendemail.php?type=form2">
在sendmail.php脚本中,您可以使用$_GET
变量访问该值:
if ($_GET['type']=='form1') {
// Do this
} else if ($_GET['type']=='form2') {
// Do this instead
}
答案 1 :(得分:0)
放置一个:
<input type="hidden" name="formPosted" value="1">
在每个表单内部都有对特定php文件的操作,并且对于每个表单更改输入值,然后在php中使用if else来查看提交的表单:)然后你的代码......:)