сеанс и cookie для обработки данных - PullRequest
2 голосов
/ 03 мая 2011

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

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

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

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

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

  1. Как я могу сохранить идентификатор сессии в файле cookie? Как я могу получить идентификатор сессии?
  2. Я думаю, сеанс разрушается, как только пользователь / посетитель закрывает браузер, я прав? Как я могу сохранить сеансы в течение более длительного периода времени, скажем, до тех пор, пока я не установлю срок действия файлов cookie?

Ответы [ 2 ]

0 голосов
/ 03 мая 2011

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

Другой вариант - сопоставить строку агента пользователя и IP-адрес. Это не на 100% точно, но приблизит вас.

Лучший вариант, imho, - это запросить регистрацию пользователей. Таким образом, вы можете подтвердить их личность и продолжать отслеживать их при каждом входе в систему.

0 голосов
/ 03 мая 2011

В 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...
}

Если вы передадите $ _expires с 0 в setcookie, это будет файл cookie на основе сеанса или будет уничтожен, когда пользователь закроет браузер.Если вы установите $ _expires на что-то большое, оно истечет позже (это должно быть количество секунд с этого момента).

Я видел, как люди используют:

$_expires = pow(2,31)-1;

для оченьдлительное печенье.

...