PHP cookie问题,适用于Firefox而不是其他浏览器

Kes*_*sty 5 php cookies firefox internet-explorer

我在php中设置cookie有问题.我要说我对php不是很有经验,所以也许是一个非常愚蠢的问题.

我有一个ajax评级系统应该检查一个cookie,看看这张照片是否已被投票.

使用ajax检查cookie的页面,添加您投票给它的照片的ID并调用此函数:

   setcookie("Name", $cookie, time()+(60*24*365), "/",  $_SERVER['HTTP_HOST'], 0); 
Run Code Online (Sandbox Code Playgroud)

显示照片的页面也会调用cookie

   $cookie = $_COOKIE['Name'];
Run Code Online (Sandbox Code Playgroud)

并检查你是否已经投票.

问题可能在于ajax页面与显示照片的页面位于不同的目录中.

显示照片的页面位于根目录中,投票的页面位于/ajax/vote.php中

在我检查IP之前,投票系统有效,但我知道我需要检查cookie.

它在Firefox中运行没有任何问题,但是当我开始在IE和Safari上进行测试时,似乎他们看不到cookie.

我已经使用IECookieViewer进行了检查,当我投票时,cookie已经创建了,但是当我回到页面时,它看起来像页面找不到cookie.此外,如果我再次投票,则将cookie替换为新的.

对不起英语不好,我希望这个问题是可以理解的

PS忘了指出可能与问题有关的事情.该页面位于iframe中.

ran*_*dom 11

检查其他浏览器的cookie设置,如果它们设置为阻止全部或退出时为空.

如果cookie在一个浏览器中工作,而不是在另一个浏览器中工作,则需要确保其他浏览器首先允许您设置cookie.

有时它看起来像你可以创建cookie,但随后每个页面重新加载它将消失或删除.

来自iframe的Cookie

也有可能因为您在iframe中设置了Cookie,浏览器可能会将其视为第三方Cookie并拒绝它,除非在浏览器首选项中明确规定允许第三方Cookie.

在这种情况下,您需要在尝试设置cookie的页面上使用紧凑的隐私策略(或紧凑的P3P标头).

对于PHP,您可以将其添加为设置cookie的页面的标题:

header('P3P:CP="IDC DSP COR ADM DEVi TAIi PSA PSD IVAi IVDi CONi HIS OUR IND CNT"'); 
Run Code Online (Sandbox Code Playgroud)