【问题标题】:Create unique id on browser tab to keep content of page在浏览器选项卡上创建唯一 ID 以保留页面内容
【发布时间】:2016-03-21 17:37:27
【问题描述】:

我正在通过

生成唯一ID
session_start();
$id = session_id();

然后我将 Web 应用程序的内容保存在数据库中,其中主键等于 $id。我这样做是为了在刷新后保留页面的内容。

但是当我打开另一个标签时,两个页面的内容是相等的。

我对 sessionStorage 很感兴趣,但只有在第一次打开选项卡时才需要生成特定的 ID,并在刷新后避免这种行为。

我很想通过 JavaScript 或 HTML5 解决这个问题,因为 PHP 在服务器端运行。

【问题讨论】:

  • 这是因为会话(默认情况下)使用 cookie,并且 cookie 在浏览器实例中的所有选项卡之间共享。这意味着每个选项卡都将具有相同的会话 cookie,因此具有相同的 ID。您需要在色情 ahem 私人/icognito 模式下打开表格,这样他们就不会共享 cookie,或者不为此使用会话。
  • 如果您需要在浏览器上动态创建元素的唯一ID,您可以使用JavaScript Date 对象和getTime() 方法w3schools.com/jsref/jsref_gettime.asp
  • @jyrkim 我喜欢这个 getTime() 的想法,我会把它和 sessionStorage 结合起来,谢谢!

标签: javascript php jquery html session-storage


【解决方案1】:

听起来您正在尝试实现某种缓存。

与其使用 session_id 作为键来存储页面输出,不如使用路由,例如'/foo'。或者是 session_id 和 route 的组合。

【讨论】:

    【解决方案2】:

    由于您的每个页面都有不同/唯一的 url,您可以在 php 一侧获取该 url,md5()-it 并使用该唯一键将您的数据保存到数据库

    $current_page_link = "http://$_SERVER[HTTP_HOST]$_SERVER[REQUEST_URI]";
    $yourPageReleventUniqueId = md5($current_page_link); // string
    

    md5 的文档 - http://php.net/manual/en/function.md5.php

    【讨论】:

      猜你喜欢
      • 2015-10-19
      • 1970-01-01
      • 1970-01-01
      • 2020-11-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多