2009-08-03 41 views
4

我试图找出一个IPB论坛的工作。保持状态,没有一个cookie

如果我打勾记得我的话,我会留在,即使我关闭浏览器,然后重新打开记录。

我想锻炼这怎么可能,因为这是由服务器设置的唯一的Cookie在会话,即年底到期时,我关闭浏览器。那么服务器如何在没有使用cookie的情况下恢复会话呢?

编辑:会话cookie设置在会议结束时到期,而我有我的浏览器设置在会议结束时删除Cookie。

这意味着,当我闭上浏览器(会话结束时),饼干应予以删除。

在我的浏览器被关闭,如果我打开了在不同的浏览器相同的网站的时候,肯定是会议应该恢复?但是,这并没有发生。

相反,如果我打开了我原来的浏览器,会话恢复。

唯一的其他设置Cookie是一种叫做pass_hash cookie,它一旦被创建期满,由每次页面加载服务器发送。所以它不会被用于认证。

回答

0

这听起来像你刚刚错过了一个cookie(或者当它过期时被误读/误解),但另一种可能性可能是它将远程地址保存在数据库中,并自动为它创建一个新的会话第二次访问。然而,这将是一个比较差的解决方案既安全明智的,并且由于NAT的,等等 - 所以我怀疑这是IPB做什么。

后您上次
+0

我没有错过任何cookie ......我一直在监控他们,因为他们是创建并检查他们的过期日期,试图理解。 – 2009-08-03 02:16:37

1

通常饼干关闭浏览器。如果您使用PHP,请查看 set_cookie's选项,或者如果您正在使用会话,请查看session区域。

// Set Cookie 
setcookie($name, $value, $expire) 
// $expire is the time in seconds since Unix Epoch (see [time()][3]) it will stay alive 
// Session 
session_set_cookie_params($lifetime) 
// $lifetime is the seconds it will stay alive in seconds 
1

会话信息时,浏览器窗口关闭不一定破坏。在PHP中,例如,你可以选择保存会话信息在数据库中,你可以坚持的是在浏览器关闭后原有的会话结束。

我能想到的另一种方法是在Users表上设置一个标志,指出用户仍然登录。也许表中有一个名为logged_in的字段,您可以将其设置为true。一定时间后[即,你不回来]它会被重置回为false。

+0

如果浏览器窗口关闭,并且会话cookie被设置为在会话结束时过期,并且当我关闭浏览器(结束会话)时cookie被删除,这是否意味着如果我打开了网站不同的浏览器会话应该恢复?如果没有,为什么不呢? – 2009-08-03 02:18:16

+0

这可能是如何工作的。 他们可以存储会话以及您的IP地址和您登录的时间。当您回来时,他们可以检查您的IP,使用用户名和上次登录时的时间进行匹配(注意:如果超过1小时, 要求登录)。 然而,您必须在用户注销时删除这些字段值。 – mlevit 2009-08-03 02:21:42

+0

为什么会话不在其他浏览器中恢复? – 2009-08-03 02:48:10

1

有几个地方可以隐藏cookie以外的会话信息。

在URL(http://example.com/app/234348738790/main

的会话密钥作为GET变量(?SESS = 257892345)

的会话密钥作为POST变量(输入类型= '隐藏')

会话密钥

将其存储在本地存储在浏览器中

使用JavaScript与上述任何一种将会话信息传回服务器。

3

Cookie的替代方法是图像或其他对象中最后修改的时间戳。服务器可以为您提供一个图像,将时间戳设置为标识会话的值。当你加载另一个页面时,浏览器会发送一个if-modified-时间戳并让你离开。

2

使用浏览器localStorage对象。例如:

localStorage.setItem("lastname", "Smith"); 
var name = localStorage.getItem("lastname");