2013-10-27 1 views
1

У меня проблема, когда настройка cookie работает отлично в chrome, но не в IE или firefox. Все браузеры являются текущей версией, и я нахожусь на машине Windows 8. Я пытаюсь установить cookie, который длится год.Настройка Cookie через PHP работает в Chrome, но не в Firefox или IE

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

Через firebug в Firefox я попытался просмотреть отклоненные файлы cookie, но ни один из них не указан, и это похоже на то, что мой cookie просто не хочет работать за пределами хрома.

Этот код находится в файле functions.php внутри моего WordPress сайте:

add_action('init', 'visitor_cookie'); 
function visitor_cookie() { 
    if (!isset($_COOKIE['returning_visit'])) { 
     $traffic_type = 'hd'; 
     $timestring = microtime(); 
     $pieces = explode(" ", substr($timestring, 2)); 
     $pieces[0] = "1".substr($pieces[0],0,3); 
     $visitor_id = $traffic_type.dechex($pieces[1]) . dechex($pieces[0]); 
     $expire = time()+60*60*24*360; 
     $path = '/'; 
     $domain = parse_url(get_option('siteurl'), PHP_URL_HOST); 
     setcookie(
      'returning_visit', 
      $visitor_id, 
      $expire, 
      $path, 
      $domain 
    ); 
    } 
} 

Примечания:

  1. Как отметить мой домен в настоящее время development.mydomain.com, который будет переместить в mydomain.com
  2. Это не на локальном хосте/сервере, его на хостинговой компании
  3. Этот файл cookie должен быть vailable на всем моем сайте.
  4. дата истечения срока действия Cookie устанавливается на один год

В дополнение к просмотру куки в браузере, я также использовал этот код для проверки куки, который снова показал выход в хроме, но никакой другой браузер.

<?php echo "'".$_COOKIE['returning_visit']."'"; ?> 

UPDATE

Вопрос заключается в куки устанавливается только при входе в систему как администратор. Файл cookie действительно установлен. Я создал вопрос более специфичные для WordPress:

Решение

Вопрос был мой хозяин кэширования страниц. Требуется, чтобы разгрузить страницы для правильного запуска PHP-кода. Кэширование было отключено для админов, поэтому я получил cookie как администратор, а не обычный пользователь.

+1

Где вы тестирование, чтобы увидеть, если куки установлен? Вы не можете проверить файл cookie на той же загрузке, что и тот, где вы установили его в – Machavity

+0

. Я перехожу в область настроек браузеров туда, где отображаются файлы cookie. Перед проверкой просматривайте веб-сайт на несколько страниц. Я также использую firebug для и инструменты IE для проверки файлов cookie. Я также использую инструменты разработчика в chrome для предварительного просмотра. – Damainman

+0

, пожалуйста, покажите нам эхо '' return_visit ', $ visitor_id, $ expire, $ path, $ domain' . В следующем я бы отлаживал HTTP-заголовки, используя инструменты браузера, такие как firebug и т. Д. – Peter

ответ

0

я прочитал ваши обновления

Вопрос заключается в куки устанавливается только при входе в систему как администратор. Файл cookie действительно установлен.

Похоже обработчик событий

add_action('init', 'visitor_cookie'); 

обжигали только тогда, когда пользователь является администратором ..

Я считаю, что в Chrome вы работаете на администратора сессии, на другом браузере вы работаете в качестве гостя ,

положить вещь вне if(is-admin) выражения

+0

Я принимаю ваш ответ Питер. Однако я не использую какое-либо выражение-admin, которое меня озадачивает. я обновляю свой пост другим вопросом, который я создал. Но ваша помощь была высоко оценена. – Damainman

+0

Проблема заключалась в том, что мой хост кэшировал страницы. Требуется, чтобы разгрузить страницы для правильного запуска PHP-кода. Кэширование было отключено для админов, поэтому я получил cookie как администратор, а не обычный пользователь. – Damainman

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