#php #session-cookies
#php #сессия-cookies
Вопрос:
Я создаю приложение, в котором мне нужно сохранить данные о принадлежности
Один из моих друзей предложил мне, что я могу сделать это с помощью сессий и cookie, но у меня нет надлежащего руководства о том, как я могу этого достичь.
Вот что я знаю.
Был бы код принадлежности для каждого продукта, когда посетитель нажимает на код принадлежности, я бы создал сеанс на стороне сервера, я бы сохранил идентификатор сеанса на стороне клиента, используя cookie, чтобы принадлежность могла быть записана для будущего посещения.
Есть два вопроса
- Как я могу сохранить идентификатор сеанса с помощью cookie-файла? Как я могу получить идентификатор сеанса?
- Я думаю, что сессия уничтожается, как только пользователь / посетитель закрывает браузер, я прав? Как я могу сохранять сеансы на более длительный период времени, скажем, до истечения срока действия моего cookie?
Комментарии:
1. Боюсь, что предложение неверно, сеансы не являются инструментом для хранения данных в течение длительного времени.
2. Правильно, они не подходят для долгосрочного хранения. Однако их можно использовать для привязки посетителя к записи базы данных, что и пытается сделать OP. Это простое отслеживание посетителей…
3. Я имел в виду «длительное время», а не «долгосрочный» . Его описание звучит так, как будто он хочет хранить данные, возможно, несколько дней или недель, без вариантов использования для сеансов.
Ответ №1:
Установите срок действия вашего cookie на некоторое время в отдаленном будущем, затем отслеживайте клиентскую часть всякий раз, когда пользователь посещает ваш сайт. Этот подход не сработает, если они очистят свои cookie-файлы.
Другой вариант — сопоставить строку пользовательского агента и IP-адрес. Это не на 100% точно, но приблизит вас к этому.
Лучший вариант, имхо, требовать регистрации для пользователей. Таким образом, вы можете подтвердить их личность и продолжать отслеживать их всякий раз, когда они входят в систему.
Ответ №2:
В PHP вы можете получить идентификатор текущего сеанса, вызвав
$_currentSessionId = session_id()
Чтобы записать это в файл cookie, просто выполните следующее:
$_expires = 0;
setcookie( 'YOUR_SID', $_currentSessionId, $_expires );
По возвращении извлеките SID из файла cookie:
if ( isset( $_SESSION['YOUR_SID'] ) ) {
$_currentSessionId = $_SESSION['YOUR_SID'];
// Do your thing...
}
Если вы передадите setcookie значение $_expires, равное 0, это будет файл cookie на основе сеанса или будет уничтожен, когда пользователь закроет браузер. Если вы установите для $ _expires значение чего-то большого, срок его действия истечет позже (это должно быть количество секунд с этого момента).
Я видел, как люди используют:
$_expires = pow(2,31)-1;
для очень долговременного cookie.