0

什么是检测在以下情况下提交的表单的可靠方法?所有提交到同一个页面,然后根据提交的表单执行操作。已经指出了这样做的许多缺点。最重要的是,即使查询字符串也转到相同的脚本。你会如何建议这样做?

表格一有两个input字段,表格二有三个。

<?php

if ( isset($_POST['valOne']) && isset($_POST['valTwo']) && isset($_POST['valThree']) ) {
    echo 'This is form three';

} elseif ( isset($_POST['valOne']) && isset($_POST['valTwo']) ) {
    echo 'This is form two';
} else {
    echo 'Neither one or two';
}

$formOne  = '<form method="post" action="http://localhost/dev/form.php">';
$formOne .= 'Name: <input type="text" name="valOne" value="Foo" autocomplete="off"><br>';
$formOne .= 'Description: <input type="text" name="valTwo" value="Bar" autocomplete="off"><br>';
$formOne .= '<input type="hidden" name="secretVal" value="secretKey">';
$formOne .= '<input value="Add This" type="submit">';
$formOne .= '</form>';

$formTwo  = '<form method="post" action="http://localhost/dev/form.php">';
$formTwo .= 'Name: <input type="text" name="valOne" value="Foo" autocomplete="off"><br>';
$formTwo .= 'Description: <input type="text" name="valTwo" value="Bar" autocomplete="off"><br>';
$formTwo .= 'URL: <input type="text" name="valThree" value="Tar" autocomplete="off"><br>';
$formTwo .= '<input type="hidden" name="secretVal" value="secretKey">';
$formTwo .= '<input value="Add This" type="submit">';
$formTwo .= '</form>';

$formThree = '<a href="http://localhost/dev/form.php?do=getIt">This is GET. Get it?<a/>';

echo $formOne;
echo '<br>';
echo $formTwo;
echo '<br>';
echo $formThree;

?>
4

5 回答 5

1

您可以为 2 个表单使用具有不同名称的隐藏输入,并且在服务器端您可以使用if(isset($_POST['hidden_for_form1']))或进行检查if(isset($_POST['hidden_for_form2']))

于 2013-06-13T14:53:30.233 回答
1

您可以将 form_id 参数添加到表单操作。

 <form method='post' action='http://localhost/dev/form.php?form_id=1'>

然后在你的代码中打开$_GET["form_id"]

于 2013-06-13T14:57:37.527 回答
1

我会使用隐藏的输入

<input type="hidden" name="form" value="form1">

另外,您是否有任何理由将表单代码存储在变量中?

于 2013-06-13T14:58:42.587 回答
0

添加隐藏输入:

<input type="hidden" name="form" value="one">
<?switch($_POST['form']){
  case "one":
  ... 
 ?>

您还可以将名称和值分配给提交按钮,但如果用户按下回车,这将不起作用

于 2013-06-13T14:54:14.263 回答
0

您需要在提交中指定一些名称,例如:

<input type="submit" name="form1" value="Add This">
<input type="submit" name="form2" value="Add This">
<input type="submit" name="form3" value="Add This">

所以..

if(isset($_POST['form1'])){ //do some stuff }
if(isset($_POST['form2'])){ //do some stuff }
if(isset($_POST['form3'])){ //do some stuff }
于 2013-06-13T15:33:13.553 回答