我有一个表单,具体取决于我要发送到其他页面的<select>
框的选定值。
我不知道这样做的最佳方式,但我想最好的方法是让中间页面始终发布,然后让中间页面检查<select>
发送的值框并将POST值转发到不同的页面,具体取决于它是什么。如果这是最好的方式,我该怎么做?如果没有,最好的方法是什么?
谢谢!
答案 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()。