2015-10-29 3 views
0

Может кто-нибудь сказать мне, почему это не работает:Установка куки на на странице основе в PHP

if (isset($_COOKIE['thisPageRated'])) { 
     die(); 
    } else { 
     $pageCookieSet = substr(get_permalink(), strlen(home_url('/'))); //use wordpress function to get the current page and then we slice off the domain 
     $expire = time()+3600; //expires in a hour 
     $value = 'set'; //value i'm giving the cookie 
     $name = 'thisPageRated'; //name of the cookie 
     setcookie($name, $value, $expire, $pageCookieSet); 
     //do some stuff 
    } 

Я хочу установить куки на на странице основе, как я пытаюсь остановить рейтинг людей страницу более одного раза. Но по какой-то причине кажется, что он настроен для всего сайта. путь выходит так, как ожидалось.

ответ

0

Сначала добавление нового файла cookie на каждую страницу не является хорошей идеей, так как никто не любит переполнять файлы cookie.

Во-вторых, то, что вы могли бы сделать, это создать единый печенье со списком просмотренных страниц с сепаратором, например:

Ваш пользователь классифицировали страницу с идентификаторами 5, 7 и 11.

$pageCookieSet = substr(get_permalink(), strlen(home_url('/'))); //use wordpress   function to get the current page and then we slice off the domain 
    $expire = time()+3600; //expires in a hour 
    $value = '5'; //value i'm giving the cookie 
    $name = 'PagesRated'; //name of the cookie 
    setcookie($name, $value, $expire, $pageCookieSet); 

Итак, мы только что создали, чтобы отметить, что страница 5 была оценена.

После этого вам просто нужно обновить значение этого файла cookie.

$_COOKIE['pagesRated'] = $_COOKIE['pagesRated'].'###'.$otherPageValue; 

$ otherPageValue быть здесь идентификатором второй страницы

Здесь мы обновили наше печенье так что это теперь возвращает:

5 ### 7

После этого вам просто нужно проанализировать значение вашего файла cookie с помощью разделителя ###

$arrayPagesRated = explode('###',$_COOKIE['pagesRated'); 

Это li пе создаст массив с идентификаторами всех страниц номинальными, как это:

$arrayPagesRated[0] = 5; 
    $arrayPagesRated[1] = 7; 

и теперь быстро in_array с вашей страницы, чтобы проверить, какие страницы уже были оценены и что будет делать трюк

+0

Привет, спасибо для ответа это звучит как хорошее решение, мало запутанное переменной $ otherPageValue. Что это такое? Итак, второй фрагмент должен идти сразу после настройки файла cookie? Третья строка помещает значения cookie в переменную, поэтому я могу просто сделать if (in_array ($ arrayPagesRated)), тогда бла-бла? – karl

+0

Только что отредактировал его, чтобы сделать его более ясным :) – Nirnae

+0

спасибо за разъяснение, но все же не уверен в этом другом значении, не будет ли это в самом файле cookie? Как мне это получить? – karl

Смежные вопросы