【问题标题】:POST to different page depending on SELECTvalue?根据 SELECTvalue 发布到不同的页面?
【发布时间】:2010-01-14 14:29:02
【问题描述】:

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

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

谢谢!!

【问题讨论】:

  • Javascript 可能是最简单的方法,您在寻找伪代码吗?
  • 好的,这么多人推荐使用javascript,有人可以发一个例子吗?谢谢。

标签: php html forms post php4


【解决方案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 = "@987654321@";

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

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

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

【讨论】:

    【解决方案2】:

    这当然是实现用户兼容性的最佳方法。

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

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

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

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

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

    【讨论】:

      【解决方案3】:

      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()。

      【讨论】:

        【解决方案4】:

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

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

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2014-09-10
          • 2022-01-14
          • 2016-10-11
          • 2023-03-05
          • 1970-01-01
          相关资源
          最近更新 更多