使用表单发布与获取打开子页面?

时间:2013-10-02 22:45:13

标签: php forms post get

使用表单发送数据到其他页面而不仅仅是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页,所以我认为他们不需要为它添加书签。

2 个答案:

答案 0 :(得分:1)

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

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

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

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

  • GET - &gt;读取指定资源
  • POST - &gt;在数据资源上创建新的数据元素
  • PUT - &gt;更新资源上的现有数据元素
  • DELETE - &gt;删除资源上的现有数据元素

答案 1 :(得分:0)

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

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