За последние 24 часа нас посетили 18805 программистов и 1708 роботов. Сейчас ищут 919 программистов ...

Просмотренные страницы

Тема в разделе "PHP для новичков", создана пользователем kazrem, 27 авг 2016.

  1. kazrem

    kazrem Активный пользователь

    С нами с:
    19 мар 2013
    Сообщения:
    18
    Симпатии:
    1
    Решил реализовать возможность для пользователей посмотреть на каких страницах сайта они побывали:
    PHP:
    1. <?php
    2. $uri=$_SERVER['REQUEST_URI'];
    3. //Если кукисы есть
    4. if (isset($_COOKIE['history'])) {
    5.     //Получаем массив кукисов
    6.     $ArrayCookies=$_COOKIE['history'];
    7.     //если элементов больше 5 то удаляем 1й элемент
    8.     if (count($ArrayCookies)>5) array_pop($ArrayCookies);
    9.     array_unshift($ArrayCookies, "".$uri."");
    10.     //На всякий случай удаляем повторяющиеся элементы, что бы небыло повторов
    11.     array_unique($ArrayCookies);
    12.     //Записываем массив обратно в кукисы
    13.     foreach ($ArrayCookies as $i => $value) {
    14.         setcookie("history[".$i."]", $value,time()+(1*24*60*60));
    15.     }
    16. }
    17. else
    18. {
    19. //Если кукисов нет, то записываем наш id под номером 1
    20. setcookie("history[1]", "".$uri."",time()+(1*24*60*60));
    21. }
    22. //Выводим содержимое кукисов
    23. if (isset($_COOKIE['history'])) {
    24.   foreach ($_COOKIE['history'] as $i => $value) {
    25.     echo "$i : $value <br>";
    26.   }
    27. }
    28. ?>
    Все вроде работает, но столкнулся с проблемой - строка array_unique($ArrayCookies); не удаляет дубли.
    В чем может быть дело?
     
    #1 kazrem, 27 авг 2016
    Последнее редактирование модератором: 27 авг 2016
  2. denis01

    denis01 Суперстар
    Команда форума Модератор

    С нами с:
    9 дек 2014
    Сообщения:
    12.227
    Симпатии:
    1.714
    Адрес:
    Молдова, г.Кишинёв
    покажи var_export двух массивов до и после array_unique, только копируй из исходного кода браузера вывод var_export, чтобы форматирование сохранилось
     
  3. kazrem

    kazrem Активный пользователь

    С нами с:
    19 мар 2013
    Сообщения:
    18
    Симпатии:
    1
    вывод var_export ($ArrayCookies); перед array_unique:
    array (
    0 => '/proba.php',
    1 => '/proba.php',
    2 => '/proba.php',
    3 => '/proba.php',
    4 => '/proba.php',
    5 => '/proba.php',
    )

    после array_unique:
    array (
    0 => '/proba.php',
    1 => '/proba.php',
    2 => '/proba.php',
    3 => '/proba.php',
    4 => '/proba.php',
    5 => '/proba.php',
    )

    Обновил несколько раз страничку proba.php, чтобы посмотреть удаляются ли дубли. Еще как добавляются (
     
    #3 kazrem, 27 авг 2016
    Последнее редактирование: 27 авг 2016
  4. kazrem

    kazrem Активный пользователь

    С нами с:
    19 мар 2013
    Сообщения:
    18
    Симпатии:
    1
    ошибка была в следующем:
    вместо
    Код (Text):
    1. array_unique($ArrayCookies);
    надо было
    Код (Text):
    1. $ArrayCookies=array_unique($ArrayCookies);
     
    denis01 нравится это.