【问题标题】:Recommended method to pass variables in HTML/PHP?在 HTML/PHP 中传递变量的推荐方法?
【发布时间】:2010-12-02 20:51:50
【问题描述】:

您好,我有一个简单的问题: 在您的网站上工作时,推荐的传递变量的方法是什么。 - 获取、发布、会话、cookie、隐藏字段……

【问题讨论】:

    标签: php html variables web parameter-passing


    【解决方案1】:
    • 显示数据时获取
    • 修改数据时的POST
    • 在会话过期后不需要保留的请求之间存储数据时的会话
    • 数据库(或其他持久性存储)存储需要在会话之间徘徊的数据

    饼干;或多或少从来没有。您放在那里的任何内容几乎总是可以更好地存储在会话中。或许仅用于持久登录。

    隐藏字段;同样,几乎从不使用会话并将数据安全地保存在服务器上。有时用作通过 javascript 收集的数据的存储点,仅此而已。

    【讨论】:

    • 我同意,除了支持隐藏字段的会话。这种方式会导致竞争条件。为需要在会话生命周期内(或直到更改)存在的数据保留会话,而不是短期内容。
    • @David - 我不确定我是否理解你;在这种情况下,比赛条件是什么?
    • 我看到的很多应用程序要么只在表单中使用 GET 要么 POST。从语义上讲,使用 GET vars 来识别要修改的数据并使用 POST vars 来指定更改,这对我来说是有意义的,可能在同一个操作中 - 这也极大地有助于支持使用前端控制器架构的应用程序。
    • 用户可能想用不同的数据填写一组表单两次,并在它们之间切换(例如,因为有人打断了他们的请求,他们需要使用相同的表单来完成)。因此,他们打开一个新选项卡并从表单的开头开始,然后返回他们之前参与的任务,却发现数据已被覆盖。
    • @symcbean:使用 POST 修改数据也会使 CSRF 变得更加困难(尽管并非不可能)。
    【解决方案2】:

    我更喜欢 Sessions。这是您上面提到的唯一服务器端选项。

    如果您想将信息从客户端传输到服务器,您可以使用 POST 或 GET。记住最后一个隐藏字段会变成get变量的帖子。

    Get、Post、Cookies 和隐藏字段都可以相对简单地操作。您选择哪个选项,请确保您始终检查您的变量是否有效。用户输入值永远不能被信任!

    【讨论】:

    • 但是,需要将数据从客户端传递到服务器,因此仅使用会话是不够的。
    • 而且会话可能会冒竞争条件的风险。没有一刀切的答案,这在很大程度上取决于要解决的问题。
    【解决方案3】:

    所有这些东西都有不同的,有时是重叠的用途。在开发完整的应用程序时选择一个并仅使用它会导致可笑的严重误用。您需要一个更具体的问题。

    【讨论】:

      【解决方案4】:

      我通常会遵守一些简单的规则:

      GET - 用于获取信息。

      例如:

      • site.com/articles/category/2site.com/articles.php?category=2 显示第二类的所有文章

      • site.com/search/mikesite.com/search.php?q=mike现场搜索mike

      POST - 用于更新或插入数据

      由于各种原因在 POST/GET 表单中使用的隐藏字段,通常用于 ID 或类似的东西

      会话 - 用于一个会话的数据。存储一些用户偏好、用户数据。

      Cookies - 用于“记住我”功能和一些 JS 的东西(因为 JS 无法访问 Session 数据)

      附:还有 PUT 和 DELETE 方法,但是一些共享主机不允许它们...

      【讨论】:

        【解决方案5】:

        取决于站点以及何时需要传递数据。

        如果它在页面上加载 cookie,如果您有会话,如果您提交表单(即 HTTP POST 或 GET),如果提交并且您不希望用户看到使用表单的隐藏字段(它是 HTTP POST 或 GET),通过 URL (GET),最后,如果它是 AJAX 例如 Web 应用程序,您有几个选项和方法可供使用(HTTP GET、PUT、POST 和 DELETE - 请参阅 RESTful APIS 以获得一个很好的示例) .

        请注意,对于所有 HTTP GET、PUT、POST 和 DELETE 方法,您仍然可以使用 cookie 和会话

        【讨论】:

          【解决方案6】:

          Session 是传递特定值的最合适的方式。但是如果你想一次性发送多个变量,那么 post 是最好的方法。

          【讨论】:

            猜你喜欢
            • 2012-10-29
            • 1970-01-01
            • 1970-01-01
            • 2013-10-16
            • 2021-01-23
            • 1970-01-01
            • 2014-12-31
            • 2012-11-11
            • 2019-09-13
            相关资源
            最近更新 更多