2012-07-29 70 views
0

我的问题是:会话Cookie是否受站点路径限制?也就是说,如果Cookie设置为mysite.net/rodents/gerbil/是否不适用于其他路径,如mysite.net/rodents/hamster会话cookie受路径限制?

的背景是:

我在http://sonet.nottingham.ac.uk/rlos/placs/users_carers/home中,我想用一个cookie来让页面旁白自动启动,或者没有,当用户进入页面开发了一个简单的网站。默认情况下,自动启动功能处于关闭状态,但如果用户通过顶部的音频播放器勾选复选框并转至另一页,则Cookie(012)会将其设置为on,播放器autostart参数在PHP(CodeIgniter)中设置为true

这可以在站点部分(例如Home)中正常工作,但是当用户移动到另一部分时(例如后续步骤),根据Firebug,cookie会消失。所以,如果我在打勾家里的复选框,然后FB报告饼干:

  • 名称:自动播放
  • 值:上
  • 域:sonet.nottingham.ac.uk
  • 大小:10b的
  • 路径:/ RLOS/placs/users_carers/
  • 过期:会话

如果我去到另一个网页首页中的cooki e仍然存在。如果我转到Next Steps,cookie会消失,但如果我勾选复选框FB,则会报告设置的Cookie,但路径为'/ rlos/placs/users_carers/steps /'。有趣的是,在部分之间切换并选中该框会为每个路径生成一个cookie。

我到现在为止还没有在我的网站中真正使用过Cookie,我更喜欢使用PHP会话变量,但我认为设置会话Cookie很简单,而且我不会因为某些原因而导致我想要cookie集客户端使用jQuery。我可以通过设置一个持久cookie来解决这个问题,但是a)我不想在用户的机器上留下cookie,并且b)我想知道翻盖是怎么回事。

这可能是我没有走过最好的方式,但这个项目必须在星期二完成,所以我不能重做我的方法。

+0

尔,以及查询是关于cookies。无论我使用Codeigniter还是Hamsterscript作为后端,或者jQuery或Beaverware客户端都不相关。但是,跆拳道,我会添加更多的标签,因为我喜欢保持民间的快乐。简单的问题是:会话cookie是否受路径限制? – 2012-07-29 18:33:49

+0

不,它们不是(至少在CI中),全部取决于如何在配置文件中设置cookie设置。例如,把'/'当作路径,你可以在你的整个一边玩它。这是你正在解决的问题吗? – manix 2012-07-29 22:06:13

+0

使用jQuery和jquery.cookie插件(https://github.com/carhartl/jquery-cookie)来取消/设置cookie。我只是在CI中阅读cookie。也许这是导致问题的插件 - 我会进行调查。昨晚我太喜欢这件事了,想清楚:( – 2012-07-30 10:18:31

回答

0

这是什么session.cookie_path指令决定:

session.cookie_pathstring
session.cookie_path指定路径在会话cookie设置。 默认为/。另请参阅session_get_cookie_params()session_set_cookie_params()。

但是,您的cookie被称为autoplay并具有on的值,所以这实际上是不是会话cookie(被称为默认PHPSESSID,并包含一个长的随机字符串)。普通饼干与set_cookie()创建:

布尔的setcookie(字符串$名称[,字符串$价值[摘要$到期= 0, 串$路径 [,字符串$域[,布尔$安全=假[,布尔$仅Http =假]]]]]])

...其中:

路径
服务器上的路径,该路径COO kie将会在 上提供。如果设置为“/”,则该Cookie将在整个域中的 中可用。如果设置为'/ foo /',则该cookie将仅在/ foo /目录内的所有子目录(例如/ foo/bar/ )内可用 。 默认值是在中设置Cookie 的当前目录。

总结:你需要明确设置路径。

编辑:我没有注意到jQuery标签。引用您的插件文件:

创建到期的cookie,横跨整个站点有效:

$.cookie('the_cookie', 'the_value', { expires: 7, path: '/' });