为什么我的表单以url的形式提交给我的php,而不是php文件中的操作


Why does my form submit to my php as a url instead of the actions in the php file

好的,我有一个带有多个提交按钮的表单。我的php文件上的编码有一个带有url的头,这取决于输入的表单。我的问题是,当我提交表单时(无论我使用哪个按钮),弹出的窗口不是分配给该按钮的url操作,而是php文件本身。我做错了什么?

表单的开头是这样的,这样你就可以看到我是否正确引导了

<form method="post" action="http://gamerzacademy.com/foodCYO.php" target="_blank">
<input type="text" name="uid">
<input type="submit" name="Dish1" value="Dish1" onclick="
  this.disabled=true; 
  this.value='Gift Opened'; 
  document.FreeFoodForm.submit();">
<input type="submit" name="Dish2" value="Dish2" onclick="
  this.disabled=true; 
  this.value='Gift Opened'; 
  document.FreeFoodForm.submit();">

等等。。。。。。

现在php文件的启动方式如下

<?php
if ($_REQUEST['Dish1'] == "Dish1") {
    header("Location: url1".urlencode($_POST['uid']));
}
else if ($_REQUEST['Dish2'] == "Dish2") {
    header("Location: url2".urlencode($_POST['uid']));
}
else if ($_REQUEST['Dish3'] == "Dish3") {
    header("Location: url3".urlencode($_POST['uid']));
}
.....etc
?>

您通过Javascript发布表单。代码不知道单击了哪个按钮,因此该按钮的值不会发布到表单中。因此,您的表单无法看到单击的是哪个按钮。如果您将方法更改为get,您将看到发布或不发布哪个值。

我认为你根本不需要从Javascript发布。只需按下按钮即可发布。只有被点击的按钮的名称和值才会被公布。

B.t.w.,你禁用了这个按钮,可能是因为你不想让人们按两次按钮,但在你的设置中,他们仍然可以按任何其他按钮。我认为将它们全部禁用是明智的。

两件事:

  1. 首先,确保您在header中发送的URL是有效的URL
  2. 其次,在<?php开始标记之前似乎有一些空白。请确保在PHP打开标记之前有no空白。如果存在,header将不起作用

通过在JavaScript中执行以下操作:

this.disabled = true;

实际上,您不会将其值发送到PHP。

一个更好的想法可能是在表单中使用一个防止双重提交的提交时处理程序。