Php 如何在不使用javascript的情况下,根据单击的按钮将表单提交到两个不同的页面
我有一个文本区域和2个按钮的表单,我需要其中一个提交到它所在的同一页面,另一个提交到另一个php文件。这两个按钮都需要允许post引用文本区域。我怎样才能做到这一点 例如:Php 如何在不使用javascript的情况下,根据单击的按钮将表单提交到两个不同的页面,php,Php,我有一个文本区域和2个按钮的表单,我需要其中一个提交到它所在的同一页面,另一个提交到另一个php文件。这两个按钮都需要允许post引用文本区域。我怎样才能做到这一点 例如: //我希望这个提交到同一页 //我想把这个提交到save.php 注意:我所有的html都是由php通过不同的脚本生成的,这些脚本会根据用户以前的操作而变化。通过重定向在服务器端执行此操作。为每个提交按钮指定一个名称(例如button1和button2)。 将表单提交到单个php脚本。 在这个php脚本上,检查$\u P
//我希望这个提交到同一页
//我想把这个提交到save.php
注意:我所有的html都是由php通过不同的脚本生成的,这些脚本会根据用户以前的操作而变化。通过重定向在服务器端执行此操作。为每个提交按钮指定一个名称(例如button1和button2)。 将表单提交到单个php脚本。 在这个php脚本上,检查$\u POST变量以查看单击了哪个按钮。 然后采取相应的行动,处理表单值,然后重定向到您想要的任何页面 要检查单击了哪个按钮,请执行以下操作:
if ($_POST["button1"]) {
// do stuff
} elseif ($_POST["button2"]) {
// do other stuff
}
您只需对用户按enter键提交表单时发生的情况保持谨慎。例如,将触发什么提交。您可以从服务器端执行此操作(如前面的回答),也可以从客户端执行此操作,如我的回答:(您甚至可以同时执行这两项操作):
功能提交(obj){
如果(对象值==“预览”){
document.getElementById('frm')。action='preview.html'
}否则{
document.getElementById('frm')。action='save.html'
}
document.getElementById('frm').submit();
}
如果您使用CodeIgniter
有更好的方法。(另一篇关于CodeIgniter
的帖子指出这是重复的,所以我想我应该为CI
添加一个更好的解决方案)
在我的例子中,我有一个购物车表单(例如)。在这个表单上,我可能有几个按钮:签出、更新购物车和清除
表格:
以下是购物车表单屏幕上的表单按钮:
<input type="submit" value="Update">
<input type="submit" value="Clear">
<input type="submit" value="Checkout">
在控制器(cart
)中,我只需使用update()
、clear()
和checkout()
函数,这些函数是save()
方法调用的。无需通过CI的redirect()或php头重定向等进行重定向
我希望这对某些人有所帮助,但是服务器脚本如何区分这两个按钮,因为它们都是“提交”类型?@xtofl:看看它们的值。。。。但该值用作显示文本;那么本地化怎么样?@xtofl也本地化服务器端的
if
语句?如果我使用它,当重定向到action2.php时,textarea的post值会保持不变吗?@Jai:不会。但是你可以在这里处理文本区域。您需要textarea值做什么?也许还有另一个/更好的方法。表单成功发送后,首选的方法是执行重定向。该值将发送到脚本save.php,以便通过另一个脚本中的sql将内容添加到数据库中。我想我可以在这个脚本中做到这一点。在同一个脚本中进行数据库事务会对安全性产生任何影响吗?@Jai:Nopez一点也不影响,只要您使用例如mysqli\u real\u escape\u string()
,mysql\u real\u escape\u string()
或更好地使用PDO准备的语句来清理正在插入数据库的用户输入。我担心这在老年人身上不起作用。他们不发送按钮的值。
<?php
if (isset($_POST['action1']) || isset($_POST['action2'])) {
// handle textarea
if (isset($_POST['action1'])) {
header('Location: /action1.php');
exit();
}
header('Location: /action2.php');
exit();
}
?>
<form>
<fieldset>
<textarea name="text"></textarea>
<input type="submit" name="action1" value="Action1">
<input type="submit" name="action2" value="Action2">
</fieldset>
</form>
<form action="" id="frm" method="post">
<textarea></textarea>
<input type='button' onclick="submitMe(this)" value='Preview'>
<input type='button' onclick="submitMe(this)" value='Save'>
</form>
<script>
function submitMe(obj){
if(obj.value == "Preview"){
document.getElementById('frm').action = 'preview.html'
}else{
document.getElementById('frm').action = 'save.html'
}
document.getElementById('frm').submit();
}
</script>
<input type="submit" value="Update">
<input type="submit" value="Clear">
<input type="submit" value="Checkout">
public function save() {
$submit_button = $this->input->post('submit_button');
if ($submit_button == 'Update')
$this->update();
else if ($submit_button == 'Checkout')
$this->checkout();
else if ($submit_button == 'Clear')
$this->clear();
}