2013-04-30 67 views
2

在我的网站上我的登录密码,如果密码&用户名是正确的,我设置一个cookie保持登录的用户 我只是从他不”用户听到。不能通过他的浏览器自动接受cookie,并且这会阻止他登录。该cookie没有设置。用户不接受Cookie - 登录PHP

有没有简单的方法来解决这个问题? 如果您需要我使用的代码,告诉我。

+6

虽然我明白有些用户会定期清除cookie /禁用它们,但我认为它不是无理说,对于使用您网站上的某些功能(例如那些需要登录)的cookie是必需的。有闪光黑客或HTML5本地存储潜在的解决方法,但这是什么饼干设计的,我会怀疑你的用户不太明白,(也许只知道跟踪饼干?) – Basic 2013-04-30 11:31:47

+3

@Basic或只是通过会话ID在URL(这也是一个可怕的解决方案)。对于OP:用户不值得花费时间来制定一些丑陋的工作。如果他不接受这是他的问题的饼干。 – PeeHaa 2013-04-30 11:34:41

+0

@PeeHaa埽我只是在回答中输入:) – Basic 2013-04-30 11:36:01

回答

1

如果你正在使用复杂的javascript/ajax,可以让它起作用,但通常是一种真正的痛苦。

总之,不是将会话ID存储在cookie中,而是将其嵌入到每个链接的末尾。

所以

http://example.com/somepage.php 

成为

http://example.com/somepage.php?SessionId=ABC123 

不幸的是,虽然PHP可以在某些情况下,为你做这个,它不与链接帮助你建立自己的JavaScript - 而且只需要点击没有ID的单个链接以有效地登出用户

查看this page了解更多信息

正如Quentin在评论中提到的,如果您没有使用cookie来识别创建会话的浏览器,那么共享链接可能会共享该会话。这可以通过检查IP地址/用户代理来缓解但不能阻止,但是在使用NAT和标准浏览器的大型企业环境中,这可能会失败

+4

在URL中存储会话标识使得非常容易泄漏它,这种技术会带来严重的安全风险。 – Quentin 2013-04-30 11:36:38

+0

Alice转到一个销售Stuff的网站。她得到一个会话ID将她和她的购物篮联系起来。她喜欢一件事。她将地址栏中的URL复制/粘贴到Twitter,与其他人共享Thing。 Bob也喜欢Thing,并将其添加到Alice的购物篮中,然后看到她购物篮中的其他物品。 – Quentin 2013-04-30 11:42:56

+0

非常好,现货。感谢您的基本答案,但我想我会尝试,如果用户取消激活他的Cookie,只需输入一条消息。再次感谢。 – 2013-04-30 15:48:03