首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PHP setcookie只能断断续续地工作(版本兼容性?)

PHP setcookie只能断断续续地工作(版本兼容性?)
EN

Stack Overflow用户
提问于 2012-04-24 03:38:03
回答 1查看 281关注 0票数 0

我目前正在运行PHP的2个版本。我的本地(测试)服务器是5.3.5,而我的远程(实时)服务器是5.2.4。这在过去造成了一些兼容性问题,但我总是能够很容易地修复它们。我的远程服务器很快就会升级,所以不会引起太多的问题,但同时我仍然要为这些愚蠢的兼容性问题提供解决方案。有没有人可以看看我下面的代码,让我知道他们是否发现了5.2.4PHP版本的任何问题?

代码语言:javascript
复制
function _cookie($name, $value) {
    $expire = strtotime('+1 month');
    $old_expire = strtotime('last day of next month');

    setcookie(
        $name,
        $value,
        $expire
    );
    var_dump($name, $value, $expire, $old_expire);
}

$date = date(
    'Y-m-d H:i:s',
    filemtime($file)
);
_cookie('user', 'bob');//works
_cookie('up2date', $date);//does not

我最初的cookie过期日期是“下个月的最后一天”,这就是为什么它仍然在var_dump列表中的原因。但是,该字符串在远程服务器上返回false,导致cookies在会话结束时过期。即使它返回false,它仍然会设置"user“cookie,并且我能够在浏览器中查看它。但是,它不会设置"up2date“cookie。我认为这很奇怪,但我认为这与返回false的strtotime函数有关。所以我先试着解决这个问题。在查阅了PHP手册之后,我确定我使用的字符串只在5.3上可用。好了,问题得到了确认,很容易解决。我将其替换为'+1个月‘字符串,我知道它将在5.2上工作。成功后,我的“用户”cookie现在就到期了。除了我还没有"up2date“曲奇。var_dump证明函数正在被调用来设置它,并且具有所有正确的参数,但是它没有设置第二个cookie。如果它根本不起作用,我也不会感到沮丧。这至少会告诉我,我做错了什么,我可以摆脱它。但为了让它像这样戏弄我...我遗漏了什么?有谁有什么想法吗?

var_dump结果:

代码语言:javascript
复制
//Local server
string(4) "user"
string(3) "bob"
int(1337797496)
int(1338488696)

string(7) "up2date"
string(19) "2012-04-20 10:52:09"
int(1337797496)
int(1338488696)

//Remote server
string(4) "user"
string(3) "bob"
int(1337795061)
bool(false)

string(7) "up2date"
string(19) "2012-04-23 09:14:19"
int(1337795061)
bool(false)
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-05-08 22:16:11

感谢DaveRandom。他在这里值得表扬,如果他加上他的答案,我会把我接受的换成他的。我只是添加了这个答案,所以我没有任何未回答的问题。

解决方案:在调用第二个cookie之前,我已经输出了,所以它无法设置它。我刚搬到我放饼干的地方。

感谢所有人的建议和时间!

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10287055

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档