Стоит ли все хранить в SESSION, или же что-то лучше хранить в COOKIE?
[Модератор, в интернете нету ясного ответа. И ответ "что хотите, то и храните" меня не совсем устраивает. Спасибо за понимание]
Здравствуйте! Уже несколько дней мучает этот вопрос, а ясного ответа в интернете нет. Я понимаю как устроены куки и сессии. Благодаря ключу, обычно называемому PHPSESSID, сервер может идентифицировать юзера и создать/получить соответствующую сессию, в которой хранятся некие данные.
Итак, куки - на клинте, сессии - на сервере.
Но что где хранить? Понятно, что всякие секретные данные лучше хранить в сессии, но что конкретно нужно хранить в куки? Модератор, перед тем как удалив мой вопрос написал что-то вроде :"что хотите, то и храните". Все равно не понятно! Зачем что-то записывать в куки, когда можно не нагружая клиент всякими куками, а оставить ему только PHPSESSID обойтись только сессией? Ведь для чего-то была создана функция setcookie(). Где нужно использовать именно куки, кроме как всяких токенов и другой информации, благодаря которой осществляется доступ к сессии. Где cookie незаменим?
столько там еще функций созданы для чего-то! Но вы же их не бежите использовать потому что они есть?)
Только при надобности функциональной.
все хранить в SESSION
а чтовы там храните прям так массово? Для авторизации достаточно держать там ID юзера, на этом функция сессии кончается.
Где cookie незаменим?
в сессиях))))
Так что храните что хотите как и сказали, в основном в куки идёт всякая информация так или иначе связанная с тем что происходит на фронте. Но при это которая нафиг не упала на бекенде.
Все что угодно от запомнить на каком слайде слайдер остановился до запомнить что юзер выбрал при сортировке/фильтрации таблицы какой-нибудь.
В cookie можно сохранить данные на очень длительное время, в то время как в сессии на сервере данные будут храниться только в течении самой сессии. Это идеально когда вы хотите сохранить какие-то данные для неавторизованных пользователей, например: человек пришёл на ваш сайт, на сайте используются уведомления, которые перед показом спрашивают "хочет ли человек получать ваши уведомления", ответ на этот вопрос лучше сохранить в cookie. В следующий раз, когда этот пользователь зайдёт к вам на сайт и сессия у него будет уже новая, но в cookie информация о том, что он не хочет смотреть уведомления, сохранится.
В cookie можно сохранить данные на очень длительное время, в то время как в сессии на сервере данные будут храниться только в течении самой сессии.
Ерунда. Почитайте, как работает сессия. Сессия на сервере будет работать ровно столько, сколько хранится phpsessid. А он обычно хранится в куках и, соответственно,
В cookie можно сохранить данные на очень длительное время
Anton Mashletov, это зависит от реализации и настроек сервера. Данные сессий могут хранится в файлах или в базе, к примеру и если эти данные были удалены, то никакой phpsessid не поможет вам их восстановить
А как долго вы можете позволить себе хранить сессии на сервере? если человек больше не зайдет? Если это бот какой нагенерировал вам лям другой сессий? Куки помогают надолго сохранить какие-то значения, по которым через продолжительное время мы сможем понять что человек у нас уже был и выбрал такие-то опции. С другой стороны куки отправляются при каждом запросе, неважно это запрос страницы, картинки, скриптов, стилей, аякс.. Всегда посылаются все или почти все куки. так что с ними нужно быть аккуратнее, не говоря про то что их можно подделать или прочитать. Также надо учитывать размер данных отправленных в куки, много примеров видел когда отвалился nginx из-за больших кук, пользователя потеряли, в логах толком ничего не увидели.