会话和cookie来处理数据

时间:2011-05-03 01:39:53

标签: php session-cookies

我正在创建一个需要保存联属数据的应用程序

我的一位朋友建议我,我可以用会话和cookies来做,但我没有正确的指导,我怎么能实现它。

这就是我所知道的。

每种产品都有附属代码 当访问者点击联属代码时,我会在服务器端创建一个会话 我会使用cookie在客户端保存会话ID,以便可以记录从属关系以供将来访问。

有两个问题

  1. 如何保存session-id with-in cookie?我怎样才能获得会话ID?
  2. 我认为一旦用户/访问者关闭浏览器就会破坏会话,我是对的吗?如何在更长的时间内保存会话,比如我设置我的cookie到期时间?

2 个答案:

答案 0 :(得分:0)

在PHP中,您可以通过调用

获取当前会话ID
$_currentSessionId = session_id()

要将其写入cookie,只需执行以下操作:

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

返回后,从cookie中提取SID:

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

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

我见过人们使用:

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

一个非常持久的cookie。

答案 1 :(得分:0)

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

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

最好的选择是imho,需要为用户注册。这样,您就可以确认自己的身份,并在登录时继续跟踪它们。