Хранить массив в сессии? Как мне это сделать? - PullRequest
0 голосов
/ 23 ноября 2011

Итак, у меня есть динамически создаваемый плейлист, который пользователи создают при поиске песен.Я хочу сделать так, чтобы при обновлении страницы все песни оставались там.

Как лучше всего сохранить список воспроизведения?

Я пытался использовать Persist.js, но сохранялмассив вроде:

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

Всегда заставляет массив выглядеть так:

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

Не то, что я хочу.Кроме того, вы не уверены, что это лучший вариант, если список воспроизведения становится большим.

Так когда же лучше создать сеанс на сервере?Или просто сохранить все песни в базе данных?

Спасибо.

Ответы [ 2 ]

1 голос
/ 23 ноября 2011

Вы также можете сохранить их как хэш-значения URL, а затем при загрузке страницы прочитать их и загрузить песни.

Если песни загружаются через PHP, вы можете установить их в виде файлов cookie, а затем заставить PHP читать файл cookie.

Кроме того, если они загружаются через PHP и вы не хотите использовать куки-файлы, у вас может быть php echo встроенный скрипт (чтобы он выполнялся до полной загрузки страницы), если в URL есть хеш-значения перенаправляет пользователя на страницу, где значения хеш-функции были преобразованы в значения GET, которые затем могут быть прочитаны PHP.

1 голос
/ 23 ноября 2011

Вы можете сохранить массив как объект JSON, который просто хранится в виде строки.Таким образом, вы можете легко сохранить его как переменную сеанса.

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

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

Я бы порекомендовал сохранить его в базе данных, если вы хотите, чтобы список хранился в течение любого промежутка времени, особенно если вы нене знаю, насколько большим может быть список.В качестве альтернативы, вы можете просто ограничить длину массива и отбросить все дорожки после, скажем, первых 20.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...