Большинство носителей хранения могут хранить типы string . Они не могут напрямую хранить структуру данных PHP, такую как массив или объект, и они не должны, поскольку это будет связывать носитель данных с PHP.
Вместо этого serialize()
позволяет вам хранить один этих структур как строка.
Если вы знакомы с json_encode()
и json_decode()
(и JSON в целом), концепция аналогична.
В то время как это - очень сложный вопрос ответить, у меня есть несколько вещей быстрого укуса, о которых я думаю при рассмотрении реализующий состояние.
Таким образом, я предполагаю, что не могу действительно предположить не желать использовать основанное на сессии состояние для чего-либо кроме самой тривиальной причины.
Безопасность является также проблемой; значения в строке запроса или полях формы могут быть тривиально изменены пользователем. Аутентификация пользователя должна быть сохранена или в зашифрованном или очевидном для трамбовки cookie или на сессии серверной стороны. Отслеживание значений передало в форме, поскольку пользователь завершает процесс, как регистрация сайта, ну, в общем, которая может, вероятно, быть сохранена в скрытых полях формы.
Хорошее (и иногда опасный) вещь, тем не менее, о строке запроса состоит в том, что состояние может быть взято любым, кто нажимает на ссылку. Как упомянуто выше, это опасно, если это дает пользователю некоторую авторизацию, они не должны иметь. Это хорошо, тем не менее, для показа Ваших друзей чего-то, что Вы нашли на сайте.
С увеличивающимся использованием Web 2.0 я думаю, что существует два важных метода, отсутствующие в Вашем списке:
8 приложений Ajax - начиная со страницы не перезагружают и нет никакой страницы для подкачки страниц навигации, состояние не является проблемой (но сохраняющиеся пользовательские данные должны использовать асинхронные вызовы XML).
9 Локальной персистентности - приложения На базе браузера могут сохранить свои пользовательские данные и указать библиотекам пользующегося локального жесткого диска, таким как Google Gears.
Что касается которого является лучшим, я думаю, что у них всех есть свое место, но метод Строки запроса проблематичен для поисковых систем.
Лично, так как почти вся моя веб-разработка находится в PHP, я использую обработчики сессий PHP.
Сессии являются самыми гибкими, по моему опыту: они обычно быстрее, чем доступы дб, и cookie, которые они генерируют, умирают, когда браузер закрывается (по умолчанию).
Избегайте InProc, если Вы планируете разместить свой веб-сайт на хосте cheap-n-cheerful как webhost4life. Я научился на горьком опыте, что, потому что их системы по подписанному, они перерабатывают приложения очень часто, который заставляет Вашу сессию теряться.Очень раздражает.
Их предложение состоит в том, чтобы использовать StateServer, который прекрасен кроме Вас, должны сериализировать/десериализовать сессию eash сообщение назад. Я люблю объекты, и мое веб-приложение полно их. Я обеспокоен производительностью при переключении на StateServer. Я должен осуществить рефакторинг, чтобы только поместить материал, в котором я действительно нуждаюсь на сессии.
Желание я знал бы это, прежде чем я запустил...
С наилучшими пожеланиями, ограбьте.
Cookie со знаком, связанные со своего рода базой данных, хранят, когда необходимо захватить данные. Нет никакой причины хранить данные на стороне клиента, если у Вас есть связанный бэкенд; Вы просто ищете проблему, если это - общедоступный веб-сайт.
Это не некоторые очень вопрос того, что использовать и что избежать, но когда использовать который. У каждого есть деталь обстоятельства, когда лучше, и другое обстоятельство, когда это хуже.
Решающим фактором обычно является время жизни данных. Состояние сеанса живет дольше, чем поля формы и так далее.
Будьте осторожны, что указывает, что Вы храните сторону клиента (строки запроса, поля формы, cookie). Что-либо связанное с безопасностью не должно быть сохранено клиентское, кроме, возможно, идентификатора сессии, если это обоснованно затенено и трудно предположить. Существует слишком много веб-сайтов, которые имеют настройки как "authenticated=true" и хранят настройки в cookie или строке запроса или скрытом поле формы. Это тривиально для пользователя для обхода чего-то как этот. Помните, что в ЛЮБОЙ вход, прибывающий от клиента, возможно, вмешались и нельзя доверять.