3

を表示するページがありphotos、それぞれphotoがにありalbumます。

ページの上部に、とがそれぞれalbums付いた選択ボックスがあります。album_idalbum_name

<form action="change-album.php" method="get">
    <table>
        <tr>
            <td><label>Select Album</label></td>
            <td><select name="album_id"><?=$albums_str?></select></td>
            <td><input type="submit" name="change-album" value="Select Album" /></td>
        </tr>
    </table>
</form>

デフォルトはuncategorised photosページの読み込みです。ユーザーはアルバムを選択してを押すsubmitと、そのアルバムの写真が返されます。

もともとこのフォームはPOSTを使用していました。

ただし、ユーザーがを選択しalbum、次にをクリックした場合photo。彼らは写真の大きなバージョンを見るでしょう。しかし、ユーザーがブラウザでBACKを押すと、と表示されますFORM MUST BE RE-SENT。これは、そのページの最後のリクエストでalbum_id写真を取得するように投稿されたためです。

GETの使用を決めました。したがって、ユーザーがBACKそのページに移動するalbum_idと、はクエリ文字列に含まれます。フォームの再送はありません!YAAY!

ただし、明らかにGETを使用すると、クエリ文字列で送信ボタンも送信されます。

だから私は得ることになります:

localhost/admin/view-photos?album_id=1&change-album=Select+Album

とにかくこれをクエリ文字列から削除できますか?

または、これを達成するためのより良い方法を誰かが考えることができますか?

実際に存在する必要はないので、クエリ文字列から削除したいと思います。無駄だ

4

4 に答える 4

8

nameボタンの属性を削除すると、リクエスト配列から送信ボタンを削除できます<input>

したがって、あなたの場合、以下を変更する必要があります。

<input type="submit" name="change-album" value="Select Album" />

代わりに以下のものになります:

<input type="submit" value="Select Album" />
于 2012-08-07T09:10:20.267 に答える
1

name属性を削除します。

<input type="submit" value="Select Album" />
于 2012-08-07T09:10:12.533 に答える
1

フォームが送信されると、キーと値のペアに変換されるため、名前がない場合、または値がない場合、要素は送信されません。

<form action="change-album.php" method="get">
    <table>
        <tr>
            <td><label>Select Album</label></td>
            <td><select name="album_id"><?=$albums_str?></select></td>
            <td><input type="submit" value="Select Album" /></td>
        </tr>
    </table>
</form>
于 2012-08-07T09:11:17.110 に答える
1

スクリプトのどこにもボタンの名前が必要ない場合は、送信ボタンに name 属性を指定しないでください。

<input type="submit" value="Select Album" />

スクリプトの一部でそれが必要であるが、それを破棄して、作業が完了したときにデータベースに保存されないようにしたい場合は、設定を解除してください。

unset ($_GET ['change-album']);
于 2012-08-07T09:13:31.123 に答える