0

我想制作一个包含两个选择($a 和 $b)和一个提交按钮的表单,当他们单击提交时,该按钮将它们带到链接“ http://www.mywebsite.com/$a$b ”

例如,如果他们选择了第一个选择“等级”和第二个“10”,然后单击提交,它将带他们到“ http://www.mywebsite.com/grade10

那是我的 index.php ,我还没有这样做,因为我不知道怎么做:P

    <?php 
error_reporting(E_ERROR | E_PARSE);

$a = $_POST['a'];
$b= $_POST['b'];
echo $a, $b;
?>
<form action="index.php" method="post">
<select name="a" title="a" id="a" >
    <option> </option>
    <option>a</option>
 </select>
 <select name="b" title="b" id="b" >
    <option> </option>
    <option>b</option>
 </select>
<input type="submit" value="submit" />
</form>

谢谢 :)

4

1 回答 1

1

从技术上讲,您不需要为此使用 PHP,因此您可以将 POST 请求的中间人切回您的服务器端代码,并通过 JavaScript 直接进入目标页面。也许是这样的:

<form action="index.php" method="post" id="redirector">
    <select name="a" title="a" id="a" >
        <option> </option>
        <option>a</option>
    </select>
    <select name="b" title="b" id="b" >
        <option> </option>
        <option>b</option>
    </select>
    <input type="button" value="submit" />
</form>

<script type="text/javascript">
    document.getElementById('redirector').onsubmit = function () {
        var a = document.getElementById('a').value;
        var b = document.getElementById('b').value;
        window.location.href = 'http://www.mywebsite.com/' + a + b;
        return false;
    };
</script>

如果他们禁用了 JavaScript,表单仍将回传到页面,在这种情况下 PHP 代码仍然可以捕获它们并执行重定向:

$a = $_POST["a"];
$b = $_POST["b"];
header("Location: http://www.mywebsite.com/" . $a . $a);

您可能希望在 JavaScript 版本和 PHP 版本中的值中添加一些错误检查逻辑,以防用户不选择某些内容(例如,如果选择中有一个空选项)或者如果恶意用户试图发布错误的值。从技术上讲,在 PHP 版本中,您将用户输入回显到响应中,因此您应该研究诸如跨站点脚本攻击之类的事情。我不是如何在 PHP 中清理类似值的专家,但值得研究。

于 2013-10-07T19:59:01.367 回答