Что может привести к тому, что cookie не будет установлен в $ _COOKIE, когда он находится в $ _SERVER

Я установил куки-файл просто отлично, и cookie находится в заголовке запроса, но когда я получаю доступ к этому файлу cookie в $_COOKIE он не установлен. Демпинг $_COOKIE показывает другие файлы cookie, но один, и все они были в заголовке запроса.

Если я сброшу $_SERVER я увижу этот файл cookie в $_SERVER['HTTP_COOKIE'] . PHP устанавливает все файлы cookie в $_COOKIE но один.

Что может вызвать это и что исправить?

Сервер работает с PHP 5.3.3.

Обновление: в верхней части моего index.php я var_dump($_SERVER); а затем var_dump($_COOKIE); на следующей строке, и ожидаемый файл cookie не печатается со второго дампа.

Update2:

Вот часть cookie моей просьбы

 Cookie:SESSe00cd0d8b79da0906c77d52ed6e26907=2f9fhsomr2skcfmivagb1i8gj7; __utma=172891446.852439441.1310775539.1310775539.1310775539.1; __utmc=172891446; __utmv=172891446.%3A; __utmb=172891446.4.10.1310780296; OATMEAL=%9Ey%EE%C9J%956%C0%06%B3%EBZ%83%D1%80%C0%AC%D2%D0T%86%9A%2A%2A%A2E%B7f%86%D7i%C1%28%19L%1Fl%920%3CE%10%B6%C9c%1D%E3%A7H%D9%E1%29%1C%7E5%C8q%CC3%21C%0C%DC%CC%A5%F3i%10%F7%DCJjF%EE%B9%80%3C%C6Jy%A2%0E%3F%E3%BD%7B%BF%CD%84%85%91%BB3%B9%EA%CB%92%89%AC%FBc%BA%A32s%B5L%3E%DF%9B%CDk%08%DEZ%13%5Da1Q%B0%1CJ%90%AE%AF%3F%15%98%1B%E1%C1g%A9%BBzR%F5Q%82%8F%81%1A%D1%0E%87%DC%F3%3B%FF%B7%8E%09%0F%BF%DFK%A3t%D1%F3%DA_%ECKt%01%00x%D2%CCE%24%BB0%C2w%B4%82%F0Q%00O%F1v%19%11%0A%3A%BB%9Fy%B1%BC9hgy%C4%DC%DEN%C4%A4%3B%7D%E8%84h%07%E3+%0B%85y%8B%B5y%1B%FC%CE%86B%F55%ED%E0%01%EB%18%13%B0%09%CA%F9%3D%26%05%FC%A7%F8%E4%CD%3C%9E%D7%24%B1%BF%27t%B4%3C%89%D76%F0%CF%C0%D4%E7Z%A6%02%19j%D7%60%28%82%DF%DF%9C%05%25%CB%CA%04%B9%21N%D2r%A76%DD%D1%CB%97%B0%A9%13%29%3C%D6kdm%D1%14%EA%D4%1Fz%F9%CF%21i%BD%19RN%C3%8Dh%27R%15%99%13%FAv%13%8F%BBd%7B%F5%AD%D5%22%13q%13Z%F219%B9%B0_%AB%16%7B%D2%18%E3%F0%F6%9D%A4X 

Отброшенный файл cookie называется «OATMEAL».

Update3: Эта ошибка PHP похожа на https://bugs.php.net/bug.php?id=52018

Длина вашей строки – 1099 символов.

Максимальная длина для Cookie составляет 4 КБ.

Предполагая, что символы UTF-8 имеют 4 байта на каждый символ, вы должны иметь возможность хранить между 1024.

Попробуйте сделать OATMEAL меньше. Намного меньше, и дайте нам знать, был ли это виновником.

Вы не должны использовать значение в $_SERVER["HTTP_COOKIE"] . Это не задокументировано , поэтому оно, вероятно, не является надежным.

Это сообщение в комментариях к функции setcookie может ответить на ваш вопрос.

Обратите внимание, что переменная $ _COOKIE не будет содержать несколько файлов cookie с тем же именем. …

Может быть, вы не установили правильный путь для файла cookie? У меня были проблемы с этим раньше, когда он не позволил мне получить доступ к файлу cookie, потому что он автоматически настраивался на странный путь. Я должен был указать правильный путь, когда я установил файл cookie.

Вы, наверное, уже знаете это, но иногда вещи могут прятаться прямо под нашими носами.

http://us3.php.net/manual/en/function.setcookie.php

приветствия, Майкл

Как уже говорили другие, это почти наверняка связано с длиной строки вашего файла cookie. Вы должны сделать это короче.

Также стоит отметить, что даже если он работает, есть очень веская причина для отсутствия такой длинной строки cookie – вся строка cookie отправляется в обоих направлениях для каждого отдельного HTTP-запроса, который вы делаете.

Допустим, у вас есть типичная страница, которая загружает двадцать изображений, два файла CSS и два файла Javascript, а также главную страницу HTML. Для строки cookie 1K, такой как ваша, это будет дополнительный 50K на пропускной способности вашего сервера (и пропускной способности вашего пользователя) для каждой загрузки одной страницы. Это быстро складывается, если у вас есть разумный объем трафика, и если у вас есть какие-то ограничения или замеры на вашей полосе пропускания, это будет стоить вам дополнительных денег.

Во-вторых, я не знаю, что содержит этот файл cookie OATMEAL; У меня нет времени декодировать его, но он очень похож на то, что вы запутываете данные (включая добавление некоторых преднамеренных символов спойлера). Имейте в виду, что если эти данные достаточно чувствительны, чтобы захотеть запутаться, то файл cookie является очень плохим местом для его хранения.

Если вам действительно нужно передать этот объем данных на сервер, вы должны отправить его в запрос POST. Если программе PHP необходимо получить к ней доступ с последующими загрузками страниц, установите ее в массив $_SESSION . Если ваш Javascript-код должен иметь возможность использовать его или установить его, используйте запрос Ajax.

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