我在Chrome和Firefox上遇到了一个奇怪的问题,因为改进它可以正常使用IE浏览器。 [ Edit1 :IE也会出现问题]
前提:
问题陈述
段
homepageView.php
createCookie('loggedin_ind', true);
function createCookie(name,value,days) {
if (days) {
var date = new Date();
date.setTime(date.getTime()+(days*24*60*60*1000));
var expires = "; expires="+date.toGMTString();
}
else{
var expires = "";
}
document.cookie = name+"="+value+expires+"; path=/";
}
App1Contoller.php
function index()
{
if(isset($_COOKIE["loggedin_ind"]))
{
//Display App1
}
else
{
redirect('http://localhost/Sitename');
}
}
任何人都可以建议为什么cookie不是写作(通过jQuery)或仅在第一时间没有被读取(通过php)? 它第二次工作正常。
它也适用于我的localhost,只有在代码迁移到服务器时才会出现问题。
Edit2:我用会话替换了 Cookie 逻辑,但问题仍然存在。
编辑3:我强烈认为这是服务器相关问题。 我在hostgator共享主机上托管了相同的代码,它在那里工作正常,问题只发生在我的godaddy VDS上。 任何人都可以建议我如何检查我的服务器上的cookie /会话是否被不同地处理。 感谢。
非常感谢任何帮助。谢谢。
答案 0 :(得分:4)
我已检查过您的代码,代码中没有问题,服务器端存在问题
以下是一些步骤请查看它并与现有配置进行比较
第1步: -
在调用此函数之前使用输出缓冲来发送输出,所有输出到浏览器的开销都将缓冲在服务器中,直到您发送它为止。您可以在脚本中调用 ob_start()和 ob_end_flush(),或在php.ini或服务器配置文件中设置output_buffering配置指令。
第2步: -
PHP指令 register_globals设置为,然后cookie值也将变为变量。
最重要的是
设置值为FALSE的cookie将尝试删除cookie,不应使用布尔值。相反,使用0表示FALSE,使用1表示TRUE。
希望这会对你有所帮助:)。
答案 1 :(得分:0)
我认为查看在App1的第一个和第二个请求中发送的普通HTTP-Header会很有帮助...
如果cookie在两个标头中都是持久的,那么这是与服务器相关的问题。否则我会仔细看看浏览器。
请求应该看起来像这样:
GET /app1 HTTP/1.1
Host: default.localhost
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:13.0) Gecko/20100101 Firefox/13.0.1
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: en-us,en;q=0.5
Accept-Encoding: gzip, deflate
Connection: keep-alive
Cookie: loggedin_ind=1
以下是Firefox推荐的扩展名列表,用于查看纯HTTP标头:What Firefox extension can dump HTTP responses? 在大多数情况下,我个人使用Firebug。
答案 2 :(得分:0)
我的一个项目遇到了类似的问题。我从我的主页发布到PHP脚本,然后根据php页面的结果,它将被重定向回我的主页。重定向回我的主页时,我会丢失会话。
无论如何,你如何展示App 1?
我发现我的错误是我使用绝对网址而不是相对来引用我的php脚本,这会导致php脚本启动新会话,有效地覆盖我之前的会话。
当我更改我的帖子网址时 http://www.mysite.com/folder/script.php 来 /folder/script.php 我不会再覆盖会话。