2016-06-12 5 views
1

В моем сценарии, если я не позвоню session_start(), print_r($_COOKIE) отобразит пустой массив независимо от того, сколько раз обновляется страница. Я прыгаю, кто-то столкнулся с этим и мог пролить больше света.PHP cookie не будет установлен, если я не запустил сеанс

//session_start(); // will not set if i remove this 
if(!isset($_COOKIE['dvr'])){ 
    $cookieDN = 'DVR'; 
    $cookieDV = 2; 
    setcookie($cookieDN, $cookieDV, strtotime("today 6:59"),"/foo/","www.domain.com",FALSE,FALSE); 
}print_r($_COOKIE); // prints null when session_start() is not called 
+0

может возникнуть проблема с «DVR» и «dvr»? – Ali

+0

http://www.w3schools.com/php/php_cookies.asp ссылается на настройки файлов cookie, я думаю, что что-то не так с вашим 3-м, 4-м параметром в функции setcookie и имя печенья чувствительны к регистру. –

+0

Спасибо, я просмотрел ссылку. Обновлен регистр ошибок регистратора и dvr. Но все-таки загадка для меня. Я тестировал на двух отдельных серверах. Скрипт запускает и устанавливает cookie на моем онлайн-сервере, но не будет работать на официальном сервере производства, если я не назову 'session_start()'. И, делая это, cookie придется снова перезапустить в браузере. Я не уверен, что это имеет какое-то отношение к конфигурации сервера? – Carbonite

ответ

0

Вы используете отсутствующий индекс в массиве!

использование

$cookieDN = 'dvr'; 

InstEd из:

$cookieDN = 'DVR'; 

или использовать

if(!isset($_COOKIE['DVR'])){ 

InstEd из:

if(!isset($_COOKIE['dvr'])){ 

PHP чувствителен к регистру!

+0

Спасибо за отзыв, все еще не настроенный. Я тестировал на двух серверах, работает на одном, но не работает на основном производственном сервере, если не вызвана session_start(). Значение Я должен перезагрузить cookie каждый раз, когда браузер запущен, хотя cookie не истек. – Carbonite

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