0

こんにちは私は初心者で、これを何時間も解決しようとしています.オプションを選択すると、URLが次のようになります。

category.php?cat_id=122&sort=BOOK_ID+ASC

私はこのコードで試しています

<form name=\"myform\" \">
<select name=\"sort\" id=\"sort\" style=\"float: right;\" onChange=\"document.myform.submit();\">
    <option value=\"car_ID desc&cat_id=$_GET[cat_id]\">cars desc</option>
    <option value=\"car_ID ASC&cat_id=$_GET[cat_id]\">cars asc</option>
</select>
</form><p>";
    $sort="$_GET[sort]";
     $stm = "SELECT *
           FROM cars
           where cat_id=$_GET[cat_id]
            ORDER BY $sort";

しかし、結果は次のとおりです。 category.php?sort=car_id+ASC%26cat_id%3D122

助けてください...

4

2 に答える 2

1

あなたの問題はここにあります:

<option value=\"car_ID desc&cat_id=$_GET[cat_id]\">cars desc</option>

あなたはおそらく欲しい:

<option value=\"cat_id=$_GET[cat_id]&car_ID desc\">cars desc</option>

とはいえ、変数 car_ID がどこから来ているのかわからず、car_ID と「desc」の間のスペースが URL に問題を引き起こします。

于 2012-04-11T22:22:11.813 に答える
1

私は次のことをします:

<form name=\"myform\" \">
<input type=\"hidden\" name=\"cat_id\" value=\"$_GET['cat_id']\">
<select name=\"sort\" id=\"sort\" style=\"float: right;\" onChange=\"document.myform.submit();\">

    <option value=\"car_ID desc\">cars desc</option>
    <option value=\"car_ID ASC\">cars asc</option>
</select>
</form><p>";
    $sort="$_GET[sort]";
     $stm = "SELECT *
           FROM cars
           where cat_id=$_GET[cat_id]
            ORDER BY $sort";

ここにいくつかのメモがあります。まず、これはまったく安全ではありません。「;DROP TABLE...」などを get 変数に簡単に入れることができます。第二に、おそらく GET をまったく使用したくないでしょう。代わりに、すべてのフォーム入力を POST で処理します。

于 2012-04-11T22:27:31.027 に答える