【问题标题】:Sending GET requests to POST based script?将 GET 请求发送到基于 POST 的脚本?
【发布时间】:2009-05-20 14:58:40
【问题描述】:

我的网站上有一个基于 POST 的搜索功能。但是,现在我希望能够提供搜索某些关键字的链接,但这当然是不可能的,因为表单不处理 GET 请求。有没有办法解决这个问题?

【问题讨论】:

    标签: php forms


    【解决方案1】:

    使用超级全局

    $_REQUEST
    

    【讨论】:

    • 它包含 $_GET、$_POST 和 $_COOKIES +1 对我来说
    • 全局变量是邪恶的。 PHP 的作用域很糟糕。
    • 嗯,$_GET、$_POST 或 $_COOKIES 不是在 PHP 中构建 Web 应用程序所必需的:D,我认为您误解了 PHP 中的概念或超全局变量...
    【解决方案2】:

    将表单的方法设置为 GET

    <form action="/search" method="GET">
    

    如果您在服务器上的搜索应用程序允许通过 get 进行搜索,这将起作用。请注意,无论如何您都应该使用 GET 进行搜索。 POST是进行修改和发布数据。您正在“获取”搜索结果,因此请使用 GET。

    【讨论】:

    • 我知道这一点,但不想修改它,因为我认为这需要很长时间。事实证明这很容易,现在一切正常。
    【解决方案3】:

    您可以使用 javascript 从链接中发布表单。如何执行此操作的示例位于此处:

    http://mentaljetsam.wordpress.com/2008/06/02/using-javascript-to-post-data-between-pages/

    【讨论】:

      【解决方案4】:

      我会考虑更改您的表单以使用 GET 进行操作。

      将 GET 用于搜索机制是合适的,因为 GET 方法用于幂等请求。即您可以重复执行它们而无需担心更改状态。 POST 的语义是您正在发布数据并执行更改(无论在这种情况下是否真的发生)

      【讨论】:

        【解决方案5】:
        <input type="text" id="searchcat"></input>
        <form method="POST">
            ...
            <input type="submit" onclick="this.form.action='/search?cat=' + document.getElementById('searchcat').value"></input>
        </form>
        

        也许这个解决方案会有所帮助?当然,“searchcat”控件似乎是一种组合框。并且 onclick 处理程序更适合用作 JS 函数,而不是内联...

        实际上,当您单击此提交时 - 浏览器会生成所有 HTTP 标头,从您的表单数据中收集请求正文,然后使用 url 发送请求,其中包含 GET 变量。这样,您将在搜索服务器端处理程序中同时拥有 GET 和 POST 数据。

        通过在控件上处理 onChange 来更改 GET 变量会更好。但是这个例子在没有 IDE 的情况下比较长并且难以阅读。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2020-11-03
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2013-03-09
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多