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

Pro*_*tic 7 php symfony doctrine-orm

我目前正在开发一个Symfony2应用程序,该应用程序不仅接受用户注册,而且允许访问者在不创建帐户或登录的情况下完成整个站点的整个流程.设计思想看起来像这样(建议/改进)欢迎):

  1. 当用户登录其帐户时,数据将照常保存到用户/相关实体
  2. 当匿名用户第一次访问该站点时,会为他们创建一个"匿名用户实体",就像他们已经注册一样,但是使用诸如USER_<session_id>标识符而不是个性化用户名之类的东西.他们在网站上执行的任何活动都会持久保存到此匿名用户实体
  3. 当匿名用户选择注册时,他们的匿名用户实体将升级为注册用户实体,保留其数据以备将来使用
  4. 如果匿名用户在未注册的情况下离开站点,则应在一段时间后清除匿名用户实体,以防止建立死数据

最好的方法是什么?具体来说,什么被认为是为匿名用户创建/操作用户实体而不必将代码放入每个控制器的"最佳实践"?

emi*_*tin 5

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


Der*_*ick 0

我有类似的事情我必须做。我所做的是收集匿名用户的 IP 地址(使用 ($_SERVER['REMOTE_ADDR']))。然后我使用该 IP 地址进行跟踪。然后,您可以在他们注册时使用它,将过去的使用情况附加到新创建的帐户中。

然后,您可以运行一个简单的查询来删除一段时间内没有活动的任何 IP 地址(大多数用户都有动态 IP 地址,因此无论如何它都会经常更改)。

  • 我绝对不会使用这种方法。在一个 IP 地址上有许多不同的用户会话处于活动状态(例如,人们从工作计算机访问您的网站,而不是在数百台计算机之间共享多个 IP 地址)。您需要在 cookie 中使用唯一的 ID。 (2认同)