Я регулярно устанавливаю файлы cookie на странице обратного вызова в своем приложении Twitter. Все отлично работает.
Теперь, используя jQuery, я отправляю форму, а функция обратного вызова активирует скрипт PHP. Этот сценарий должен установить только один cookie для сериализованных значений $ _POST; и значения работают нормально (как сериализованные, так и нормальные, я повторил их для отладки). Срок годности установлен на 1 год вперед. Но по какой-то причине cookie просто нигде не появится. Вот код:
// js/main.js
$('#settings-form').live('submit', function() {
$.post('controllers/settings.php', $(this).serialize(), function(data) { // Everything here works.
if (data == 'OK') // no errors spits out "OK". this works
changeView({'msg': 'Your settings were saved successfully.'}); // This just resets the view and adds a message div at the top. This works
else
changeView({'msg': data}); // This echoes the error if any exists. Doesn't happen, no errors arise
});
return false; // Cancels redirecting after submitting form
});
// controllers/settings.php
setcookie('user_settings', serialize($_POST), strtotime('+1 year'));
Я проверил все переменные и даже попытался установить фиктивные для теста (например, "boo" вместо serialize ($ _ POST). По какой-то причине это не работает.
Есть идеи, почему это происходит? Я пытался сделать чдир ('..'); чтобы файл cookie направлялся в нужное место, но это не проблема, проверка файлов cookie в моем браузере, похоже, не работает вообще, для любого пути. Это просто не работает вообще. Я также попытался вручную изменить домен и путь, но они тоже не работают.