2011-05-03 97 views
2

我在做一个应用程序,我需要保存数据的归属会话和饼干来处理数据

我的一个朋友建议我说,我可以用会话和饼干做到这一点,但我没有在正确的引导我怎么能实现它。

这是我所知道的。

会有隶属关系代码为每个产品 当访问者点击隶属关系代码,我将创建在服务器端的会话 我会使用Cookie保存在客户端的会话ID,使从属关系可以被记录为未来的访问。

有两个问题

  1. 我如何保存会话ID:在饼干吗?我如何获得会话ID?
  2. 我认为一旦用户/访问者关闭浏览器会话就会被破坏,对吗?如何在更长的时间内保存会话,直到我设置cookie过期为止?
+0

恐怕这个建议是错误的,会话不是长期存储数据的工具。 – 2011-05-03 01:54:55

+0

正确,它们不适合长期存放。但是,它们可以用来将访问者链接到OP正在尝试执行的数据库记录。这是简单的访客跟踪... – lucifurious 2011-05-03 02:02:13

+0

我的意思是“长时间”而不是“长期”。他的描述听起来像是他想要持续数天或数周的数据,而不是会话的用例。 – 2011-05-03 02:26:25

回答

0

将您的Cookie过期设置为将来的某个时间,然后在用户访问您的网站时跟踪客户端。如果他们清除他们的cookies,这种方法将会中断。

另一种选择是匹配用户代理字符串和IP地址。这不是100%准确,但会让你接近。

最好的选择,恕我直言,是要求为用户注册。这样,您可以确认他们的身份,并在登录时继续跟踪他们。

0

在PHP中,你可以通过调用

$_currentSessionId = session_id() 

将其写入到一个cookie获取当前会话ID,只要做到以下几点:

$_expires = 0; 
setcookie('YOUR_SID', $_currentSessionId, $_expires); 

返回时,拉SID从曲奇:

if (isset($_SESSION['YOUR_SID'])) { 
    $_currentSessionId = $_SESSION['YOUR_SID']; 
    // Do your thing... 
} 

如果您通过$ _expires of 0 setcookie它将是一个基于会话的cookie,或者在用户关闭浏览器时被销毁。如果将$ _expires设置为较大的值,它将在稍后过期(应该是从现在开始的秒数)。

我见过的人使用:

$_expires = pow(2,31)-1; 

了很长一段持久的cookie。