在php中设置cookie时出错

时间:2016-07-11 08:49:19

标签: php cookies

这是我的目录结构

main folder (public_html)
index.php

sub-folder1
   subindex1.php
   subfirst1.php

sub-folder2
   subindex2.php
   subfirst2.php

这是我的目录结构。 主文件夹是public_html。我有两个子文件夹 - 子文件夹1和子文件夹2。

我在subfolder1的subindex1.php中运行一个脚本,在子文件夹2中设置一个cookie,以便subindex2.php可以访问它

这就是我现在正在做的事情。

在进行一些后端计算后,我从subindex1.php设置了这样的Cookie,然后重定向到subindex2.php

setcookie('id', "", time() + 60 * 60 * 24 * 30, '/../sub-folder2/');
setcookie('token', "", time() + 60 * 60 * 24 * 30, '/../sub-folder2/');             
header("Location: ../sub-folder2/subindex2.php"); 

页面重定向但未设置Cookie。

这是定义cookie路径的方法吗?

2 个答案:

答案 0 :(得分:1)

您的路径不正确。从/开始,您将从根目录开始。使用以下内容:

setcookie('id', "", time() + 60 * 60 * 24 * 30, '/sub-folder2/'); // ../sub-folder2/
setcookie('token', "", time() + 60 * 60 * 24 * 30, '/sub-folder2/');  // ../sub-folder2/           
header("Location: ../sub-folder2/subindex2.php"); 

检查手册here是否有任何疑问。

答案 1 :(得分:1)

来自php手册

  

可在其上使用cookie的服务器上的路径。如果   设置为'/',cookie将在整个域中可用。如果   设置为'/ foo /',cookie只能在/ foo /中使用   目录和所有子目录,例如/ foo / bar / of domain。该   默认值是正在设置cookie的当前目录   英寸

setcookie('id', "", time() + 60 * 60 * 24 * 30, '/../sub-folder2/');
setcookie('token', "", time() + 60 * 60 * 24 * 30, '/../sub-folder2/'); 

更改为

setcookie('id', "", time() + 60 * 60 * 24 * 30, '/');
setcookie('token', "", time() + 60 * 60 * 24 * 30, '/'); 

或者您希望这只适用于子文件夹2:

setcookie('id', "", time() + 60 * 60 * 24 * 30, '../sub-folder2/');
setcookie('token', "", time() + 60 * 60 * 24 * 30, '../sub-folder2/');