根据SELECTvalue POST到不同的页面?

时间:2010-01-14 14:29:02

标签: php html forms post php4

我有一个表单,具体取决于我要发送到其他页面的<select>框的选定值。

我不知道这样做的最佳方式,但我想最好的方法是让中间页面始终发布,然后让中间页面检查<select>发送的值框并将POST值转发到不同的页面,具体取决于它是什么。如果这是最好的方式,我该怎么做?如果没有,最好的方法是什么?

谢谢!

4 个答案:

答案 0 :(得分:1)

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

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

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

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

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

我看到的唯一其他选项是使用javascript来更改表单目标或某些内容,但有一些警告(javascript必须启用,代码更复杂,重定向不应该在视图中真正发生)一页)

答案 1 :(得分: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,否则会遇到大量的安全问题。

答案 2 :(得分:0)

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

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

答案 3 :(得分: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()。