如何设置cookie然后在PHP中重定向?

Wic*_*wok 41 php cookies http-headers

在做了一些处理之后,我想为用户输入设置一个cookie值,然后将它们重定向到一个新页面.但是,cookie没有设置.如果我注释掉重定向,则cookie已成功设置.我认为这是某种类型的标题问题.这种情况的最佳解决方法是什么?

if($form_submitted) {
    ...
    setcookie('type_id', $new_type_id, time() + 60*60*24*30);
    header("Location: $url");
    exit;
}
Run Code Online (Sandbox Code Playgroud)

请注意,setcookie true在任何一种情况下都会返回,我没有收到任何错误/警告/通知.

编辑:我使用的是Unix/Apache/MySQL/PHP

Gla*_*vić 72

如果您有人工网址或子文件夹(例如www.domain.com/path1/path2/),则必须将cookie路径设置为/以适用于所有路径,而不仅仅是当前路径.

if($form_submitted) {
    ...
    setcookie('type_id', $new_type_id, time() + 60*60*24*30, '/');
    header("Location: $url");
    exit;
}
Run Code Online (Sandbox Code Playgroud)

从PHP手册:

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

  • 那你应该问@QuestionMark. (4认同)
  • 讨厌的小斜线 (3认同)