#php #session #cookies
#php #сессия #файлы cookie
Вопрос:
Я создал скрипт «Недавно просмотренные элементы», который использует сеансы для вставки просмотренных продуктов в базу данных. Затем, если есть сеанс, он будет извлекать продукты, которые вы просмотрели.
Но, похоже, что сеансы «очищены»?
Прошлой ночью я просмотрел около 10 продуктов, и это было успешно, но затем я продолжил ложиться спать. Как только я проснулся и протестировал его снова, мой сеанс больше не существовал, и он создал новый сеанс.
Редактировать: прошлой ночью я перевел свой компьютер в спящий режим перед тем, как лечь спать.
Сейчас это не кажется оптимальным, но я думаю, что я на правильном пути к успеху.
Как бы вы подошли к этому? Использую ли я лучшие доступные мне ресурсы?
Ответ №1:
Это верно, сеансы имеют значение тайм-аута. Вы можете увидеть, какие настройки влияют на это, обратившись к параметрам конфигурации сеанса PHP.
В качестве альтернативы вы могли бы сохранить его в файлах cookie или базе данных. При использовании файлов cookie объем хранилища ограничен. С помощью базы данных вы можете сохранять данные, привязанные к пользователю, но становится сложнее поддерживать анонимных пользователей.
Комментарии:
1. Еще раз спасибо, что помогли мне с этим скриптом
2. Итак, вы говорите, что было бы разумно использовать как файлы cookie, так и сеансы
3. @RPM вы можете использовать cookie для временного хранения для заполнения сеанса, но с сеансами сложнее работать, если вы не имеете дело с зарегистрированным пользователем, если у вас нет другого способа их идентификации. Несмотря на наличие IP-адреса, с одного IP-адреса могут приходить несколько пользователей, и IP-адреса также могут быть подделаны.
Ответ №2:
Я также много искал, чтобы найти ответ, но ничего не получил…и я понимаю, что только мой мозг мог мне помочь, и я нашел способ
установите файлы cookie следующим образом
<?php if(isset($_COOKIE['recent']))
{$arr = $_COOKIE['recent'];
$arr = $arr." ".$_REQUEST['id'];}
setcookie('recent', $arr, time() 10000, '/');
?>
затем,
$pizza =$_COOKIE['recent'];
$pieces = explode(" ", $pizza);
$key=0;
foreach ($pieces as $key => $value) {
повторите здесь то, что вы хотите
}