【问题标题】:How to handle form submit button when submit button has no name提交按钮没有名称时如何处理表单提交按钮
【发布时间】:2014-07-01 08:30:56
【问题描述】:

我有一个搜索表单,提交按钮如下所示:

<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']))

但他们也没有工作。如果有人能帮我解答,那就太好了。

【问题讨论】:

  • 为什么不发布表单或使用 AJAX 而不是使用 URL 来获取数据
  • @Darren 正在提交的输入字段仍显示在 URL 中。
  • 这是个好主意。可以将隐藏字段与提交按钮一起传递吗?哎呀没关系,只需阅读 Padarom 的回复 :)
  • 如果你不想要 (&search_submit=Go) 你为什么要把它放在 URL 中。你能添加关于如何编译 URL 的代码来看看吗

标签: php button submit


【解决方案1】:

您不能删除输入元素的名称,因为 PHP 不知道要查找哪个值。如果要完全隐藏 URL 后面的字符串,请使用 request method 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 的一个很好的答案可以在 here 找到。


编辑:如果您只是不想让按钮显示在 URL 中,但其他所有内容都应该仍然存在(根据您的 comment),您可以简单地删除这两个值和提交按钮的名称。

您可以寻找其他值,而不是寻找要设置的search_submit

if (isset($_GET['username'], $_GET['password'])) {
    // Do your stuff here
}

【讨论】:

  • 这就是我害怕的。不幸的是,我需要使用 GET,因为我的表单的每个部分,除了提交按钮,都需要在 url 中(用于浏览器后退按钮/书签功能)。所以我要么被提交显示在 url 中,要么希望还有另一个技巧?
  • 嗯,谢谢帕达罗姆。我认为这可能是我唯一的选择,尽管我必须想出一个技巧来使用它……初始 GET(表单其余部分中的所有内容)在加载表单时默认设置……所以我无法检查它们,因为它们在我提交之前已经设置。当然,默认情况下唯一没有设置的是提交按钮 :) 但我想我可以使用您的解决方案背后的想法来想出一些东西...感谢您的提示 :)
【解决方案2】:

如果您不想在URL 中显示字符串,可以使用POST 方法。 GETPOST 的主要区别如下:

获取

  • 参数保留在浏览器历史记录中,因为它们是 URL 的一部分 可以做书签。
  • 发送时不应使用GET方法
  • 密码或其他敏感信息。
  • 最多 7607 个字符 尺寸。
  • 网址示例:new.php?category=sport

发布

  • 参数未保存在浏览器历史记录中。
  • 无法添加书签。
  • 发送密码或其他信息时使用的 POST 方法 敏感的信息。
  • POST 方法的最大大小为 8 Mb。
  • 网址示例:new.php

示例代码:

if (isset($_POST["search_submit"])) {
    do blah
}

【讨论】:

    【解决方案3】:

    如果提交按钮没有名字,那么它就不是一个成功的控件,根本不会出现在提交的数据中。

    测试是否存在来自表单中其他字段的数据。

    【讨论】:

    • 希望我至少可以对此以及其他一些帖子进行投票。虽然还没有足够的代表:(
    猜你喜欢
    • 1970-01-01
    • 2015-05-07
    • 1970-01-01
    • 2014-10-31
    • 2012-10-02
    • 2011-06-30
    • 1970-01-01
    • 1970-01-01
    • 2010-10-11
    相关资源
    最近更新 更多