Php 赛特库奇赢了';不行?

Php 赛特库奇赢了';不行?,php,jquery,cookies,setcookie,Php,Jquery,Cookies,Setcookie,我定期在Twitter应用程序的回调页面中设置cookies。一切正常 现在,使用jQuery,我提交了一个表单,回调函数激活了一个PHP脚本。该脚本只需将一个cookie设置为$\u POST;并且这些值运行良好(序列化和正常,我将它们回显以进行调试)。过期时间设置为提前1年。但由于某些原因,饼干不会出现在任何地方。代码如下: // js/main.js $('#settings-form').live('submit', function() { $.post('controller

我定期在Twitter应用程序的回调页面中设置cookies。一切正常

现在,使用jQuery,我提交了一个表单,回调函数激活了一个PHP脚本。该脚本只需将一个cookie设置为$\u POST;并且这些值运行良好(序列化和正常,我将它们回显以进行调试)。过期时间设置为提前1年。但由于某些原因,饼干不会出现在任何地方。代码如下:

// 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
});
我检查了所有的变量,甚至尝试为测试设置虚拟变量(比如“boo”而不是序列化($\u POST)。出于某种原因,这不起作用

知道为什么会这样吗?我试着做了一个chdir(“…”);要使cookie目录转到正确的位置,但这似乎不是问题,检查浏览器中的cookie似乎对任何路径都不起作用。它根本不起作用。我还尝试手动更改域和路径,但这些都不起作用。

首先,chdir()这是个麻烦事——Cookies是特定于域的;目录路径对它们没有任何影响

当您进行ajax类型的调用时,cookie可能会工作得有点奇怪,我想这就是您看到的——服务器可能正在设置cookie,但浏览器可能没有在cookie数据中设置它,因为它不是页面加载

我建议您最好使用PHP的会话处理而不是cookie;这有利于安全性,减少带宽(因为每个http单个请求都会向两个方向传输整个cookie数据),并且更有可能工作


如果您真的想使用cookie,那么使用Javascript可能会更好。您可以通过访问document.cookie在Javascript代码中设置cookie。(您需要获得cookie字符串的正确语法,但JQuery可能有自己的函数,使它们更易于使用)

好吧,我所做的是将两者结合起来——使用JS设置cookie,但使用PHP来获得正确的值,这样我就可以轻松地使用它。谢谢!可惜我不得不使用JS解决问题。
// controllers/settings.php
setcookie('user_settings', serialize($_POST), strtotime('+1 year'));