0

2 つの選択項目 ($a と $b) と、送信をクリックするとリンク ' http://www.mywebsite.com/ $a$b' に移動する送信ボタンを含むフォームを作成したいと思います。

たとえば、最初に「グレード」を選択し、2 番目に「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);

ユーザーが何かを選択しない場合 (たとえば、select に空のオプションがある場合)、または悪意のあるユーザーが不正な値を投稿しようとします。技術的には、PHP バージョンでは、ユーザー入力を応答にエコー バックしているため、クロスサイト スクリプティング攻撃などを調べる必要があります。私は PHP でそのような値をサニタイズする方法の専門家ではありませんが、調査する価値はあります。

于 2013-10-07T19:59:01.367 に答える