我有一个查看photos
的页面,每个photo
都在一个album
中。
在页面顶部,我有一个albums
选择框,其中分别包含album_id
和album_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
,则AND THEN会单击photo
。他们将看到这张照片的放大版。但是,如果用户在浏览器上按BACK,它会显示FORM MUST BE RE-SENT
。这是因为该页面上的最后一个请求发布了获取照片的album_id
。
我决定使用GET。因此,当用户将BACK
转到该页面时,album_id
在查询字符串中!没有表单重新发送!耶!
然而,显然使用GET也会在querystring中发送提交按钮!
所以我最终得到:
localhost/admin/view-photos?album_id=1&change-album=Select+Album
我是否可以将其从查询字符串中删除?
或者有人能想出更好的方法来实现这一点吗?
我想从查询字符串中删除它,因为它实际上不需要在那里。其无用的
如果删除按钮<input>
的name
属性,则可以从请求数组中删除提交按钮。
因此,在您的情况下,您将不得不修改以下内容:
<input type="submit" name="change-album" value="Select Album" />
改为下面的那个:
<input type="submit" value="Select Album" />
删除名称属性:
<input type="submit" value="Select Album" />
提交表单时,它会被转换为键值对,因此如果没有名称或值,则不会发送元素:
<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>
如果在脚本中的任何位置都不需要按钮的名称,那么就不要给提交按钮提供名称属性。
<input type="submit" value="Select Album" />
如果你在脚本的某个部分确实需要它,但想丢弃它,这样当你完成它时它就不会存储在数据库中,那么就取消设置它。
unset ($_GET ['change-album']);