сессия и cookie для обработки данных

#php #session-cookies

#php #сессия-cookies

Вопрос:

Я создаю приложение, в котором мне нужно сохранить данные о принадлежности

Один из моих друзей предложил мне, что я могу сделать это с помощью сессий и cookie, но у меня нет надлежащего руководства о том, как я могу этого достичь.

Вот что я знаю.

Был бы код принадлежности для каждого продукта, когда посетитель нажимает на код принадлежности, я бы создал сеанс на стороне сервера, я бы сохранил идентификатор сеанса на стороне клиента, используя cookie, чтобы принадлежность могла быть записана для будущего посещения.

Есть два вопроса

  1. Как я могу сохранить идентификатор сеанса с помощью cookie-файла? Как я могу получить идентификатор сеанса?
  2. Я думаю, что сессия уничтожается, как только пользователь / посетитель закрывает браузер, я прав? Как я могу сохранять сеансы на более длительный период времени, скажем, до истечения срока действия моего 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.