Php 如何在不使用javascript的情况下,根据单击的按钮将表单提交到两个不同的页面

Php 如何在不使用javascript的情况下,根据单击的按钮将表单提交到两个不同的页面,php,Php,我有一个文本区域和2个按钮的表单,我需要其中一个提交到它所在的同一页面,另一个提交到另一个php文件。这两个按钮都需要允许post引用文本区域。我怎样才能做到这一点 例如: //我希望这个提交到同一页 //我想把这个提交到save.php 注意:我所有的html都是由php通过不同的脚本生成的,这些脚本会根据用户以前的操作而变化。通过重定向在服务器端执行此操作。为每个提交按钮指定一个名称(例如button1和button2)。 将表单提交到单个php脚本。 在这个php脚本上,检查$\u P

我有一个文本区域和2个按钮的表单,我需要其中一个提交到它所在的同一页面,另一个提交到另一个php文件。这两个按钮都需要允许post引用文本区域。我怎样才能做到这一点

例如:


//我希望这个提交到同一页
//我想把这个提交到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();
}