2014-09-22 62 views
1

在我的网站上有评论框。为什么php不能删除JavaScript设置的cookie?

发布评论是由JavaScript处理,JS数据发布到PHP脚本和PHP确实只有当用户登录时,如果用户的心不是在那么PHP给not_loggedin响应接收它的js后登录该数据库相关的东西,并显示确认显示了自举弹出框与链接到登录页面。

因此,如果用户没有登录,那么javascript会将输入的注释存储在cookie中,以便在登录后用户不必重新输入注释。像这样

document.cookie = id + "=" + input_text + "; "; 

,并在注释文本域登录后通过读取它具有存储注释文本饼干填充..

一切都交给这是工作完美,但是在PHP中插入评论后,我很试图删除的cookie这样,

setcookie($id, "", time()-3600); 
print_r($_COOKIE); 
exit('<p class="bg-info">Thank you! Your comment has been posted.</p>'); 

,但它仍然不删除的cookie,当我重新加载页面,注释textarea的盒子我填充是从饼干看了一遍先前enetered评论,

我该如何解决这个问题?

我甚至试过显示由JS存储在PHP中的cookie,艾克这个

//insert comment in db 
//setcookie($id, "", time()-3600); 
print_r($_COOKIE); 
exit('<p class="bg-info">Thank you! Your comment has been posted.</p>'); 

但它不显示这是由JS设置cookie,它显示PHPSESSID的cookie发布评论后,

Array 
(
    [PHPSESSID] => c5rc6c8ggg24edg1v2o8hebb20 
) 

我不想删除PHPSESSID cookie。, 我在使用js的页面上显示此内容。 as post_comment.php是同一台服务器上另一个目录中的另一个文件。

我做错了什么?

简而言之, js设置cookie和php应该删除cookie。

----------

更新1:

而在JS这样

document.cookie = id + "=" + input_text + "; path=/"; 

和之后设置的Cookie我试图设定路径张贴cookie。,现在我明白了,

Array 
(
    [PHPSESSID] => c5rc6c8ggg24edg1v2o8hebb20 
    [4778] => this is comment 
) 

我的PHP代码是这样的,

//insert comment is db        
setcookie($id, "", time()-3600); 
printr($_COOKIE); 
exit('<p class="bg-info">Thank you! Your comment has been posted.</p>'); 

但cookie是仍然存在。


更新2: 这是很奇怪的,

,如果我尝试设置在PHP中同名的cookie,多了一个饼干被创建。 我的php代码。

setcookie($id, "sdf", time()+36000); 
printr($_COOKIE); 
exit('<p class="bg-info">Thank you! Your comment has been posted.</p>'); 

现在,当我检查broswers cookie管理器,我看到2块饼干具有相同的名称,

但两者具有不同的内容,这是设置USNG的javascript有用户enetered注释和一个我们使用php设置的另一个cookie是内容“sdf”。

我不知道这是怎么可能有2个cookie完全相同的名称。 ,

任何线索?

+0

在评论存储之后,您仍然可以在js端看到cookie吗? – andrex 2014-09-22 04:41:55

+0

@andrex我没有得到它,你的意思是,我重新加载页面后,我填充了cookie值的评论框,甚至cookie都发布了。 – AMB 2014-09-22 04:44:21

+0

看到这个http://stackoverflow.com/questions/10593013/delete-cookie-by-name – gabereal 2014-09-22 04:46:00

回答

2

你需要确保所有的 参数(除名称和时间取决于该cookie。)是相同的,而设置的Cookie在Javascript和而PHP删除Cookie的

参数,即名称,路径(价值和到期时间可以不同。)

例如。

虽然设置在JavaScript中的cookie,如果你使用这样

document.cookie = id + "=" + input_text + " ; path=/"; 
你设置为“/”

然后在PHP中删除的cookie,你应该专门设置这样的路径

//remove cookie. 
setcookie($id, "", time()-36000 , "/");