Twitterアプリケーションのコールバックページで定期的にCookieを設定しています。すべてが正常に動作します。
ここで、jQueryを使用してフォームを送信すると、コールバック関数がPHPスクリプトをアクティブ化します。そのスクリプトは、1つの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'));
私はすべての変数をチェックし、テスト用にダミーの変数を設定しようとしました(serialize($ _ POST)の代わりに "boo"など)何らかの理由で機能しません。
なぜこれが起こっているのか考えはありますか?chdir('..');をやってみました cookie dirを正しい場所に移動させるためですが、それは問題ではないようです。ブラウザ内のcookieをチェックしても、どのパスでもまったく機能しないようです。まったく機能しません。ドメインとパスを手動で変更しようとしましたが、どちらも機能しません。