将数据存储在“匿名”用户身上

时间:2011-05-11 16:55:47

标签: php doctrine-orm symfony

我正在开发一个不仅会接受的Symfony2应用程序 用户注册,但将允许访问者几乎通过 整个网站流程,无需创建帐户或登录。设计理念看起来像这样(建议/改进欢迎):

  1. 当用户登录其帐户时,数据将照常保存到用户/相关实体
  2. 当匿名用户第一次访问该网站时,会为他们创建一个“匿名用户实体”,就像他们已注册一样,但使用USER_<session_id>作为标识符而不是个性化用户名。他们在网站上执行的任何活动都会持久保存到此匿名用户实体
  3. 当匿名用户选择注册时,他们的匿名用户实体将升级为注册用户实体,保留其数据以供将来使用
  4. 如果匿名用户在未注册的情况下离开了站点,则应在一段时间后清除匿名用户实体以防止建立死数据
  5. 最好的方法是什么?具体来说,什么被认为是为匿名用户创建/操作用户实体而不必将代码放入每个控制器的“最佳实践”?

2 个答案:

答案 0 :(得分:5)

我建议不要使用IP地址,因为这可能会给NAT后面的用户带来问题。 使用自定义cookie或sessionId(PHPSESSID)cookie作为跟踪目的的标识符将是一个更好的主意。 Google将此策略用于其广告业务。站在巨人的肩膀上!

答案 1 :(得分:0)

我有类似的东西,我必须这样做。我所做的是收集了匿名用户的ip地址(使用($ _SERVER ['REMOTE_ADDR']))。然后我使用ip地址进行跟踪。然后,您可以在注册时将其用于将其过去的使用情况附加到新创建的帐户中。

然后你可以运行一个简单的查询来丢弃任何一段时间没有活动的ip地址(大多数用户拥有动态ip地址,所以它会经常变化)。