【问题标题】:Best practices on remembering where the user was on php记住用户在 php 上的位置的最佳实践
【发布时间】:2018-09-20 08:24:23
【问题描述】:

我想就如何在 PHP 脚本上记住用户所在位置的最佳做法提供一些建议。

所以我们有一个 PHP 应用程序,它有一个 HTML+Js 前端,并且在该前端我们显示了一个分页的项目列表(通过 DataTables)。当用户点击一个项目时,应用程序会加载一个包含项目描述的新页面。

我们想要实现的是,当用户点击浏览器的后退按钮时,准确地发送到他/她在列表中的位置(准确的页面和行)

我们使用 DataTables 来列出分页等,因此将用户定位在特定行上不是问题。

我想到了两种方法:

  • Cookies (客户端):因此,每次用户更改 DataTable 中的页面时,我们都会存储一个 cookie。每当用户返回该页面时,我们都会读取 cookie 并将用户定位在该特定页面/行上。
  • Sessions (服务器端):每次用户登陆项目页面时,我们都会存储一个带有项目 ID 的会话变量。每当用户返回项目列表时,我们都会读取会话变量,并生成跳转到项目所在的特定页面/行所需的 javascript。

以上的优点/缺点?

还有其他想法/建议吗?

【问题讨论】:

  • "我们想要实现的是,当用户点击浏览器的后退按钮时,准确地发送到他/她在列表中的位置(确切的页面和行)" ...你无法控制它,这就像拥有一个带有JS history.back()的按钮一样。
  • 最佳实践可以根据每个人的经验提出,您的问题可能会被关闭。
  • @Yasin 为什么 cookie 与会话相比成本不高?您从哪里获得这些信息?
  • @Yasin cookie 的缺点之一是有些人在导航时禁用了 cookie。无论如何谢谢你的评论。

标签: php session cookies


【解决方案1】:

您应该始终为用户可以导航到的任何位置发出唯一 URL,然后标准浏览器导航就可以正常工作。如果您将状态存储在 cookie 或会话中(此处没有明显差异),一次只能有一个这样的状态,用户将无法打开具有不同状态的单独窗口/选项卡。这与 HTTP 的工作方式背道而驰。

如果您从一个页面链接到另一个页面,请在 URL 中添加参数以表示唯一状态,例如:

如果您在页面上使用 Javascript 动态更改状态,则可能添加片段来表达这些状态更改:

您还可以使用 Javascript History API 以其他方式更改 URL,而不仅仅是片段。重要的是您可以读取该 URL 并再次重现相同的状态。

【讨论】:

  • 那么,如果我理解正确,您是在提议使用 URL 来控制和记住导航的情况?
  • 是的,这就是浏览器和 HTTP 的工作方式。
猜你喜欢
  • 2011-08-23
  • 2011-02-05
  • 2011-04-01
  • 2012-01-10
  • 2014-07-22
  • 1970-01-01
  • 1970-01-01
  • 2011-12-08
相关资源
最近更新 更多