Я играю с PHP, и я хочу добиться следующего (я знаю, что это возможно с сторонними плагинами, но я хочу построить это самостоятельно как практика) :Хранение истории навигации пользователя в cookie/сеансе
- Сохраните историю всех URL-адресов, которые посещает пользователь на моем (Joomla driven) сайте в cookie.
- Отправьте массив значений (другую информацию о пользователе, включая историю URL-адресов) в источник (файл или базу данных), когда пользователь выходит из системы. Я еще не занялся вторым пунктом, но был бы признателен за ответ или хороший указатель.
The PHP код я создал до сих пор:
$user = JFactory::getUser();
$helper = JUserHelper::getUserGroups($user->id);
if(!isset($_COOKIE['pagehistory'])){
setcookie('pagehistory',$_SERVER['REQUEST_URI'].'|');
}
else {
$_COOKIE['pagehistory'] .= $_SERVER['REQUEST_URI'].'|';
}
// debug: destroy cookie
//setcookie ("pagehistory", "", time() - 3600);
$group = "";
foreach ($helper as $value) {
$group .= $value."|";
}
$userinfo = array(
'id' => $user->id,
'username' => $user->username,
'realname' => $user->name,
'group' => $group,
'url' => $_SERVER['REQUEST_URI'],
'history' => $_COOKIE['pagehistory'],
);
Проблема у меня есть с 'pagehistory' куки. Когда я делаю тест с помощью консоли, я, кажется, получаю только первый URL-адрес и всегда занимающий второе место, но не более того.
Пример:
нав к URL 1: '/' // (корень)
Nav к URL-адресу 2: '/ новости'
Nav к URL: 3 ''/учебники
Результаты файла cookie:
Раунд 1: '/'
Раунд 2: '/ |/news' // '|' будучи разделителем
Round 3: '/ |/учебники' // вместо '/ |/Новости |/учебники'
Что я делаю неправильно?
Это решение сработало, но я смущен в отношении техники. У меня создалось впечатление, что «setcookie» используется для создания файла cookie с начальным значением. Но если моя цель - постоянно обновлять тот же файл cookie, когда пользователь нажимает на новую страницу, я должен установить его еще раз? Разве это не создаст два куки-файла, будет ли настройка cookie с тем же именем уже существующего файла cookie, который просто перезаписывает оригинал? – brooklynsweb
@brooklynsweb yes, он будет перезаписан, если вы укажете те же параметры домена или пути, которые в вашем случае одинаковы всегда. Взгляните на [this] (http://stackoverflow.com/q/6487564/1940041) – dhavald
Jsut сохраните ранее сохраненный файл cookie в базе данных и затем перезапишите. –