提问人:jotty 提问时间:7/1/2014 最后编辑:Wilsonjotty 更新时间:7/1/2014 访问量:188
提交按钮没有名称时如何处理表单提交按钮
How to handle form submit button when submit button has no name
问:
我有一个搜索表单,提交按钮如下所示:
<input type="submit" name="search_submit" value="Go"/>
我使用以下 php 处理此表单:
if (isset($_GET['search_submit'])) {
do blah
}
工作正常。但是我的 url 然后包括 &search_submit=Go。我不希望它出现。
我知道要解决这个问题,我需要从表单输入行中删除 name 属性。
但是我的 php 不再起作用,我不确定如何更改它以处理表单。我试着把它改成:
if (isset($_GET['submit']))
和
if (isset($_GET['Go']))
但他们也没有用。如果有人能帮我找到答案,那就太棒了。
答:
0赞
Quentin
7/1/2014
#1
如果提交按钮没有名称,则它不会是一个成功的控件,并且根本不会出现在提交的数据中。
而是测试表单中是否存在来自其他字段的数据。
评论
0赞
jotty
7/1/2014
希望我至少可以对此以及其他一些帖子投赞成票。虽然还没有足够的代表:(
1赞
padarom
7/1/2014
#2
您不能删除输入元素的名称,因为 PHP 不知道要查找哪个值。如果要完全隐藏 URL 后面的字符串,请使用请求方法 POST 而不是:GET
<form action='myscript.php' method='POST'>
<input type="submit" name="search_submit" value="Go"/>
</form>
您的 PHP 将使用以下内容:
$_POST['search_submit']; // Instead of $_GET['search_submit'];
关于何时使用 GET 和 POST 的一个很好的答案可以在这里找到。
编辑:如果您只想不让按钮显示在 URL 中,但其他所有内容都应该仍然存在(根据您的评论),您可以简单地删除提交按钮的值和名称。
您可以查找其他值,而不是查找要设置的值:search_submit
if (isset($_GET['username'], $_GET['password'])) {
// Do your stuff here
}
评论
0赞
jotty
7/1/2014
这就是我所害怕的。不幸的是,我需要使用 GET,因为除了提交按钮之外,我的表单的每个部分都需要位于 url 中(用于浏览器后退按钮/书签功能)。所以我要么被困在 url 中显示提交,要么希望有另一个技巧?
0赞
jotty
7/1/2014
嗯,谢谢帕达罗姆。我想这可能是我唯一的选择,尽管我必须想出一个技巧来使用它......默认情况下,初始 GET(表单其余部分中的所有内容)在加载表单时进行设置。所以我无法检查它们,因为它们在我提交之前就已经设置好了。当然,默认情况下唯一未设置的是提交按钮:)但我想我可以利用你的解决方案背后的想法来想出一些东西......感谢您的提示:)
1赞
nawazlj
7/1/2014
#3
如果不想在 中显示字符串,可以使用该方法。和 之间的主要区别如下:URL
POST
GET
POST
GET格式:
- 参数保留在浏览器历史记录中,因为它们是 URL 的一部分 可以添加书签。
- 发送时不应使用 GET 方法
- 密码或其他敏感信息。
- 最多 7607 个字符 大小。
- 网址示例:new.php?category=sport
邮 编:
- 参数不会保存在浏览器历史记录中。
- 不能添加书签。
- 发送密码或其他时使用的 POST 方法 敏感信息。
- POST 方法的最大大小为 8 Mb。
- URL 示例:new.php
示例代码:
if (isset($_POST["search_submit"])) {
do blah
}
评论