0

我有一个表格,取决于<select>我想发送到不同页面的框的选定值。

我不知道执行此操作的最佳方法,但我认为最好的方法可能是让中间页面始终发布到,然后让中间页面检查从<select>框中发送的值并将 POST 值转发到不同的页面取决于它是什么。如果这是最好的方法,我该怎么做?如果没有,最好的方法是什么?

谢谢!!

4

4 回答 4

1

这肯定是用户兼容性的最佳方法。

您可以使用 HTTP 重定向标头来执行此操作,例如

header("Location: http://www.example.com/");

应该在页面有任何输出之前调用它。

这样,用户在按下前进/后退按钮时甚至不会登陆中间页面。

我看到的唯一其他选择是使用 javascript 来更改表单目标或类似这些行的东西,但这有一些警告(必须启用 javascript,更复杂的代码,重定向不应该真的发生在页面视图中)

于 2010-01-14T14:35:21.737 回答
1

这是个好办法。另一种方法是使用Javascript来拦截点击,重写action表单的属性和submit()它。

但是对于您的 PHP:

第一页:

<form action="intermediary.php" method="post">
  <input id="submitTo">
    <select value="1">goToFirstPage</select>
    <select value="2">goToSecondPage</select>
  </input>
</form>

第二页:

<?php
  $url = "";
  if($_POST["submitTo"] == "1") $url = "http://mysite.com/firstPage.php";

 if($_POST["submitTo"] == "2") $url = "http://mysite.com/secondPage.php";

 header ("Location: $url");    
?>

不要将实际的 URL 放在你的首页,否则你会遇到大量的安全问题。

于 2010-01-14T14:39:31.357 回答
0

我会使用 javascript 来更改表单的目标

如果你真的想使用 php,你应该尝试curl

于 2010-01-14T14:35:51.453 回答
0

javascript

function form_submitted(){
   switch(document.myform.select_name.value){
     case 'whatever':
        document.myform.target.value = "whatever_you_need";
        break;
     case 'whatever2':
        document.myform.target.value = "whatever_you_need_2";
        break;
    }
}

然后要么将此函数分配给具有“onSubmit”属性的表单,要么有一个按钮(而不是提交按钮)调用该函数并在函数末尾添加 document.myform.submit()。

于 2010-01-14T16:19:37.563 回答