有没有办法从GET请求中删除提交按钮?

时间:2012-08-07 09:08:03

标签: php forms

我有一个浏览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 个答案:

答案 0 :(得分:5)

如果删除按钮name的{​​{1}}属性,则可以从请求数组中删除提交按钮。

因此,在您的情况下,您将不得不修改以下内容:

<input>

成为下面的一个:

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

答案 1 :(得分:1)

删除名称属性:

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

答案 2 :(得分: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>

答案 3 :(得分:1)

如果您不需要脚本中任何位置的按钮名称,那么就不要为提交按钮指定名称属性。

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

如果您确实需要脚本的某些部分,但想丢弃它,以便在完成后不会将其存储在数据库中,那么只需取消设置即可。

unset ($_GET ['change-album']);