0

使用表单发布将数据发送到其他页面而不是仅使用 html 链接 ($_GET) 方法是一种好习惯。

假设我的页面users.php列出了该网站的所有用户,那么我想页面user_details.php列出有关特定用户的详细信息 - 我可以通过两种方式做到这一点。

<a href="user_details.php?user_id=752">Details</a>

或者

<form action="user_details.php" method="post">
<input type="hidden" name="user_id" value="742" />
<input type="button" name="nothing" value="User Details" />
</form>

或者我每次都可以加载代码,将$_POST数据放入$_SESSION然后在页面user_details.php检查$_SESSION中的user_id是更好的安全实践吗?

编辑: 此站点需要身份验证才能看到任何内容。管理员总共只有大约 10 页,所以我认为他们不需要为它添加书签。

4

2 回答 2

1

对于 Web 应用程序,对我来说,基本准则是:

  • 在不修改数据的情况下使用 GET(只读)
  • 在修改数据的情况下使用 POST(仅限 WRITE/UPDATE)
  • 在需要验证某些数据以返回可变结果类型的情况下使用 POST(即登录、联系表单等,根据发送的数据,返回的页面的行为可能会有所不同)

对于典型的 Web 应用程序,还需要考虑您是否希望页面/资源可以通过数据配置进行导航。换句话说,您是否希望有人能够为该页面添加书签并查看相同的确切数据表示(数据读取)。如果是这样,请使用 GET。

这也很好地符合 REST 范例,通常支持以下 HTTP 操作:

  • GET -> 读取指定资源
  • POST -> 在数据资源上创建一个新的数据元素
  • PUT -> 更新资源上的现有数据元素
  • DELETE -> 删除资源上的现有数据元素
于 2013-10-02T22:51:43.947 回答
0

为此使用 $_GET 的一个主要好处是它允许您的用户为 url 添加书签,本质上是链接到它,而不是强迫用户填写表单。如果您使用 $_POST 这是不可能的。

然而,对于 URL 而言,为此使用查询字符串并不是最友好的。最好使用某种漂亮的 url 结构,例如 Wordpress 或 Stackoverflow 对用户页面所做的。这可以通过编辑服务器上的 .htaccess 文件来完成。

于 2013-10-02T22:48:47.163 回答