当前位置:  开发笔记 > 编程语言 > 正文

如何识别访客用户的时间比通常存在的时间长

如何解决《如何识别访客用户的时间比通常存在的时间长》经验,为你挑选了1个好方法。

我知道,我可以使用\Session::getId().但它不时变化.也许我不理解会议.据我所知,当php运行时它会启动,当php代码完成时它会被删除.另一方面,我读到会话ID存储在cookie中,当用户再次打开您的站点时,会话'恢复'.那么为什么在我的情况下会话ID会很快到期.如何才能获得至少在一个月内没有变化且会被购物车使用的"会话ID"?

更新:问题变得有点混乱,因为我不想要如何调用某些东西而不知道这些东西是如何工作的.

我想知道如何识别访客用户并在一段时间内获得其唯一ID(比通常存在的会话长).在结果中我想要具有someFunction可以执行以下操作的功能:

$guestId = someFunction();
$dbRow = Model::findByGuestIdOrNew($guestId);
// now $dbRow contains all previosly save info about a guest user, 
// of it does not exists, create new row by `$guestId`.

在我看来,会话有一些唯一的id,它存在的时间比会话长.当我看到大多数购物车包中的购物车项目直接保存到会话时,我想到了这个想法.我真的不知道这些包存放购物车的时间有多长,但我认为这个时间甚至超过一周.这个购物车生命周期是我在使用这样的购物平台时定义的:shopify和bigcommerce.我知道他们存放购物车的时间超过一周.所以我想知道他们在创建帐户之前如何识别访客用户.此外,了解大多数"购物车"包存储购物车物品的时间长度将是一个有用的信息.



1> Bogdan..:

Laravel实现了一种处理会话的自定义方式,但其逻辑与PHP Sessions文档描述的逻辑相同.以下是该文档的摘录,几乎可以解释其背后的逻辑:

会话是一种根据唯一会话ID为各个用户存储数据的简单方法.这可用于在页面请求之间保留状态信息.会话ID通常通过会话cookie发送到浏览器,ID用于检索现有会话数据.缺少ID或会话cookie使PHP知道创建新会话,并生成新的会话ID.

因此,您对会话如何使用ID的理解是正确的,但会话中还有另一个组件,用于定义会话的持续时间.会话在预定义的时间段后过期,在Laravel的情况下,可以在config/session.php文件中设置:

'lifetime' => 120,

上述默认值表示会话将在用户不活动120分钟后过期.当用户关闭浏览器时,还有一个选项可以使会话到期,从而在他再次打开浏览器时强制生成新会话,方法是:

'expire_on_close' => true,

您应该阅读Laravel会话文档以更深入地了解Laravel如何处理会话,还可以阅读config/session.php文件中的注释,这些注释解释了每个配置选项的功能以及可以采用的值.


上面解释了会话如何在PHP和Laravel中工作,因此在您的情况下,使会话持续整整一个月,您可以将lifetime值设置为:

'lifetime' => 60*24*30 // 60 minutes x 24 hours x 30 days = 43200 minutes

但这似乎是一个非常长的时间来保持会话,特别是如果会话还包含身份验证信息.如果您想要保留购物车的内容,我建议您将它们存储在数据库中,当用户下次登录时,只需从数据库填充会话.


例如,Cartalyst Cart库(恰好有很好的Laravel集成)处理购物车背后的所有逻辑,同时提供了一个很好的sync方法,允许您将存储在数据库中的购物车项目添加到当前会话中.您可以执行以下操作从数据库还原购物车:

// Get the items from the database
$items = CartItem::where('user_id', Auth::id())->get();

// Sync the items with the session cart
Cart::sync($items);

上面假设您有一个附有模型的cart_itemsCartItem,并且您正在使用Laravel身份验证来处理用户会话,但正如您所看到的那样,它可以实现一个非常容易实现的解决方案.

推荐阅读
低调pasta_730
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有