например в кабинете пользователя формируется реферальная ссылка mysite.ru/?ref=13 если пользователь перешел по этой ссылке на сайт, как записать ее в куки на 10 дней? и как запомнить если этот пользователь не зарегался на сайте сразу, а зашел через 8 дней и куки помнил что этот пользователь пришел от такого-то реферала
Очень просто. Алгоритм:
$_GET['ref']
, запоминаем. Если есть - человек перешел по реферальной ссылке$_COOKIE['ref']
, запоминаем. Если оно есть, значит человек уже заходил ранее по реферальной ссылке. Если его нет, но в GET у нас есть реферальная ссылка, то создаем запись в куках: саму реферальную ссылку, и дату/время входа по реферальной ссылке, в двух позициях, например $_COOKIE['ref']
для ссылки и $_COOKIE['ref_timestamp']
для даты/времени из функции time()
time() - $_COOKIE['ref_timestamp']
, в секундах. Делим на (24*60*60)
и получаем "дней назад"Для справки:
$_COOKIE['name']
path
и domain
у функции setcookie()
, там есть подводные камниНемного кода:
<?php
/* Куки передаются в заголовке HTTP, поэтому нужно предотвратить любой вывод в поток до того
* как мы все закончим с заголовками */
ob_start();
$html = '';
/* Если есть реферальная ссылка в запросе */
if (isset($_GET['ref'])) {
/* Создаем запись о реферальной ссылке и куках (на 8 дней) */
$ref = $_GET['ref'];
$expire = 8*24*60*60;
setcookie('ref', $ref, time() + $expire);
setcookie('ref_timestamp', time(), time() + $expire);
$html .= '<p>Вы зашли по реферальной ссылке в запросе, ref='.$ref.'</p>';
}
/* Если есть реферальная ссылка в куках */
if (isset($_COOKIE['ref']) && isset($_COOKIE['ref_timestamp'])) {
$ref = $_COOKIE['ref'];
$html .= '<p>Вы уже заходили по реферальной ссылке в куках, ref='.$ref.', дата: '.date("Y.m.d H:i:s", $_COOKIE['ref_timestamp']).'</p>';
/* Здесь вы можете проанализировать время входа и выполнить дополнительные действия */
}
/* Вывод */
print '<html><head><title>769191</title><meta charset="utf-8"></head><body>'.$html.'</html>';
/* Производим вывод в поток */
ob_flush();
?>
Обратите внимание, что куки отсылаются в ответе браузеру. То есть они появятся в $_COOKIE
не сразу, а при следующем запросе от этого же браузера. Поэтому очень часто после установки куков делают перенаправление, даже на эту же страницу, чтобы обработать запрос уже с учетом куков
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Есть таблица, где имеется три поля с датамиДата добавления объявления, дата отправки и дата прибытия