【问题标题】:Storing array in session? How should I do this?在会话中存储数组?我该怎么做?
【发布时间】:2012-01-05 01:02:48
【问题描述】:

所以我有一个用户通过搜索歌曲创建的动态创建的播放列表。我想让它在页面刷新时所有歌曲都保留在那里。

存储播放列表的最佳方式是什么?

我尝试过使用 Persist.js,但存储了一个数组,例如:

[["title":"song name", "artist":"someartist"], ["title":"another song", "artist":"one more"]]

总是使数组显示为:

["title", "song name", "artist", "someartist", "title"...]

不是我想要的。另外不确定如果播放列表变大是否是最好的主意。

那么什么时候创建一个服务器会话更好呢?或者只是将所有歌曲存储到数据库中?

谢谢。

【问题讨论】:

    标签: javascript session session-state


    【解决方案1】:

    您也可以将它们存储为 URL 哈希值,然后在页面加载时读取它们并加载歌曲。

    如果歌曲是通过 PHP 加载的,您可以将它们设置为 cookie,然后让 PHP 读取 cookie。

    此外,如果它们是通过 PHP 加载的,并且您不想使用 cookie,则可以让 php 回显一个内联脚本(以便在整个页面加载之前执行),如果 URL 中有哈希值将用户重定向到已将哈希值转换为 GET 值的页面,然后 PHP 可以读取这些值。

    【讨论】:

      【解决方案2】:

      您可以将数组保存为 JSON 对象,该对象只是存储为字符串。这样,您可以轻松地将其存储为会话变量。

      $_SESSION['test'] = json_encode($myArray);
      
      $loadedArray = json_decode($_SESSION['test']);
      

      如果您希望将列表存储任意长度,我建议将其存储在数据库中,尤其是在您不知道该列表可能有多大的情况下。或者,您可以对数组长度设置一个上限,并在前 20 个之后丢弃所有轨道。

      【讨论】:

        猜你喜欢
        • 2012-02-03
        • 2017-11-22
        • 1970-01-01
        • 2018-01-16
        • 2021-02-25
        • 1970-01-01
        • 1970-01-01
        • 2012-05-26
        • 1970-01-01
        相关资源
        最近更新 更多