可以将路径参数添加到$ _COOKIE []吗?
答案 0 :(得分:9)
如果您尝试访问为当前域中的其他路径设置的Cookie,则无法执行此操作。浏览器本身限制了这一点,只发送适合当前路径的cookie。
答案 1 :(得分:5)
虽然HTTP客户端(即:浏览器)没有发回cookie设置的路径,但PHP实际上假设有关其 $ _ COOKIE 数组的cookie。
如果您设置两个具有相同名称的Cookie,则其中一个值为" first-value"使用路径 / ,第二个使用值" second-value"使用路径 / test ,遵循RFC推荐(但不是必需)行为的浏览器将向您发回两个值。当您访问 / test 路径下的URL时,浏览器会发送以下内容:
Cookie: name=second-value, name=first-value
"问题"是PHP只读取第一个值 - $ _ COOKIE [' name'] 只包含值" second-value"没有暗示"第一价值"存在。如果您需要访问这两个值,则需要自己解析 $ _ SERVER [' HTTP_COOKIE'] 的值 - 这将包含" name = second-value,name =第一值"对于上面的例子。注意"第二个值"排在第一位,因为它设置了更长的路径。请注意,RFC不保证这种行为,它只说HTTP客户端应该这样做。
答案 2 :(得分:2)
是的,这是第四个参数,但如果使用当前目录所在的路径设置cookie,您将只能访问该cookie。
令人困惑......这是来自php:
服务器上的路径 cookie将可用。如果设置为 '/',cookie将可用 在整个域内。如果设置为 '/ foo /',cookie只会是 在/ foo /目录中可用 和所有子目录,如 / foo / bar /域名。默认 value是当前目录 正在设置cookie。
http://php.net/manual/en/function.setcookie.php
您可以像访问任何其他Cookie一样访问它。如果脚本可以访问它,它将在$ _COOKIE中可用。
答案 3 :(得分:2)
不,这样的参数是不可能的,因为浏览器不会将路径发送到服务器。它只会发送每个cookie的名称和值(因此您无法查看路径,如果它是会话cookie,何时会过期等等。)
答案 4 :(得分:2)
我认为不可能从不同的路径获取cookie,因为它可能会导致安全问题。