2011-11-23 59 views
0

所以我有一个动态创建的播放列表,用户通过搜索歌曲来创建。我想这样做,当页面刷新所有的歌曲留在那里。在会话中存储数组?我应该怎么做?

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

我一直在使用Persist.js但像存储阵列的尝试:

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

总是让数组显示为:

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

不是我想要的。另外,如果播放列表变大,是不是最好的想法。

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

谢谢。

回答

1

您可以将该数组另存为一个JSON对象,该对象只存储为一个字符串。通过这种方式,您可以轻松将其存储为会话变量。

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

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

我建议将其存储在数据库中,如果你想存放的任何时间长度的名单,特别是如果你不知道这个名单可以有多大得到。或者,您可以在阵列长度上设置一个上限,并在第一个20之后丢弃所有曲目。

1

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

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

此外,如果他们正在通过PHP加载,并且你不想使用cookie,你可以让php回应一个内联脚本(这样它会在整个页面加载之前执行),如果其中有散列值URL将用户重定向到散列值已转换为GET值的页面,然后PHP可以读取该值。