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

2024-02-23

我知道,我可以使用\Session::getId()。但它会随着时间的推移而改变。也许我不明白这些会议。据我所知,它在 php 运行时启动,并在 php 代码完成时删除。另一方面,我读到会话 ID 存储在 cookie 中,当用户再次打开您的网站时,会话会“恢复”。那么为什么在我的例子中会话 ID 过期得这么快。如何获得至少一个月不变且购物车使用的“会话 ID”?

Update:这个问题变得有点令人困惑,因为我不想如何调用某些东西,也不知道这些东西是如何工作的。

我想知道如何识别来宾用户并在一段时间内(比通常存在的会话长)获取其唯一 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 https://www.shopify.com/ and 大商业 http://bigcommerce.com/。我知道他们存放购物车物品的时间超过一周。所以我想知道他们如何在创建帐户之前识别访客用户。此外,了解大多数“购物车”包存储购物车物品的时间也将是一个有用的信息。


Laravel 实现了一种处理会话的自定义方式,但逻辑与 中描述的相同PHP 会话文档 http://php.net/manual/en/session.examples.basic.php。以下是该文档的摘录,几乎解释了其背后的逻辑:

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

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

'lifetime' => 120,

上述默认值意味着会话将在用户不活动 120 分钟后过期。还可以选择在用户关闭浏览器时使会话过期,从而在用户再次打开浏览器时强制生成新会话,方法是设置:

'expire_on_close' => true,

您应该阅读Laravel 会话文档 http://laravel.com/docs/5.1/session想要更多地了解 Laravel 如何处理会话,还可以阅读来自config/session.php文件解释每个配置选项的作用以及它可以采用的值。


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

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

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


例如卡特里斯特购物车 https://cartalyst.com/manual/cart/2.0#cart-sync库(恰好有非常好的 Laravel 集成)处理购物车背后的所有逻辑,同时提供一个很好的sync https://cartalyst.com/manual/cart/2.0#cart-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_items表有一个CartItem模型已附上,并且您正在使用Laravel 身份验证 http://laravel.com/docs/5.1/authentication处理用户会话,但正如您所看到的,它导致了一个非常容易实现的解决方案。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何识别访客用户的时间比会话通常存在的时间长 的相关文章

  • 我可以让 swagger-php 在查询字符串上使用数组吗?

    我使用 Swagger php 当我定义查询字符串上的参数时 它可以是一个数组 但据我所知 它不支持这种查询字符串 https api domain tld v1 objects q 1 q 5 q 12 我相信这会被设定in the co
  • Smarty 如果 URL 包含

    使用 Smarty 标签我想确定 URL 是否包含单词 例如 if smarty get page contains product php 我知道 contains 不存在 但是我怎样才能轻松地编写类似的东西来实现上述代码呢 所有 PHP
  • MVP - 演示者应该使用 Session 吗?

    我正在为网页使用模型 视图 演示者模式 演示者应该知道会话还是应该只有视图知道它 我想我的意思是像会话这样的概念与视图的体系结构非常相关 所以它们应该仅限于视图使用吗 否则 如果我想在不同架构的类似页面上重用演示者 会发生什么 或者我不需要
  • php中的条件格式化html表与时间戳比较

    echo table style width 100 tr echo td Order td echo td Destination td echo td Location td echo td Status td echo td Time
  • 如何对 SQL 进行多次查询

    我正在尝试创建一个表 并在 PHP 脚本的帮助下在数据库中插入一些值 虽然只插入 1 行 但效果很好 当我尝试输入更多行数时 出现错误 我需要为每个查询编写完整的插入语句 因为我正在使用在线 Excel 到 SQL 查询转换器
  • CodeIgniter 控制器 - JSON - AJAX

    我正在尝试通过 AJAX 使用 CodeIgniter 发送表单构建 并尝试使用 JSON 获取响应 但是 我只在打开开发人员选项卡时看到响应 我什至不确定这是否实际上是响应 因为它显示了两个 json 数据 它所显示的只是加载旋转器 然后
  • PHP 无法加载动态库“php_pdo_oci.dll”

    我在 Windows 8 上运行 Apache 2 4 7 和 PHP 5 5 9 我安装了 PHPUnit 并开始弹出此警告图像 警告 是的 我在 php ini 中启用了扩展加载以及 extension dir 以更正文件夹 并且该文件
  • 如何防止在 PHP 中使用超出“使用”范围的特征方法

    我想知道是否有任何方法可以防止在 PHP 的任何类上下文之外使用特征方法 让我用一个简短的例子来解释我想要什么 这是我当前的代码 File MyFunctions php trait MyFunctions function hello w
  • 如何在HTML中的PHP中注释掉HTML和PHP?

    这是我想注释掉的一行代码 h1 class post title a href title a h1 一种流行的注释方法是分别注释 html 和 php 有一个更好的方法吗
  • 检查 PHP 中的字符串长度

    我有一个长度为 141 个字符的字符串 使用下面的代码我有一个if如果字符串大于或小于 140 则语句返回一条消息 libxml use internal errors TRUE dom new DOMDocument dom gt loa
  • 在 WooCommerce 中添加到购物车之前清空购物车

    我正在使用 WP 作业管理器和 Woo Subscriptions Now 最初 我选择了一个套餐 Woo Subscription 然后我添加了所有细节 但没有提交 回到网站 所以要再次购买 我需要选择一个套餐 于是我选择了套餐并填写了详
  • Facebook 应用程序无法获取会话

    我正在 Heroku 上为 Facebook 开发一个非常基本的 PHP 应用程序 它显示非常基本的用户信息 如姓名 个人资料图片 但该应用程序在 getToken 方法中停止 我在登录我的个人资料后尝试了该应用程序 但仍然出现相同的消息
  • Ebay api GetSellerList,解析响应 XML

    我正在使用 eBay 交易 api 来获取当前列出的卖家股票 我正在使用 GetSellerList 调用 我在解析 xml 时遇到问题 然后将其插入到网站商店中 这是 xml 请求
  • PHP 中的引用

    我正在编写一个自定义博客引擎 并且希望拥有类似于 Wordpress 的引用 我可以查看 WordPress 源代码 但我真的更喜欢某种教程 但到目前为止我还没有找到 有没有关于在 PHP5 中实现 trackbacks 或 pingbac
  • WordPress 自定义帖子类型未显示在搜索结果中

    我在 WordPress 中遇到自定义帖子类型 测验 和搜索的问题 自定义帖子类型未显示在我的搜索结果页面中 我的搜索结果中仅显示默认的帖子内容 以下是我使用的代码 函数 php函数create posttype register post
  • 从所有会话中注销

    我有一个注销选项 这是我的代码 session start session destroy setcookie key time 60 60 24 setcookie username time 60 60 24 我想添加另一个选项来注销所
  • 我可以在 PHP 会话变量中安全地存储用户名和密码吗?

    我想在 REST api 之上制作一个轻量级的 web 应用程序 用户只需进行一次身份验证 从那时起 所有针对 web api 的请求都希望通过以某种方式保持用户名和密码有效来完成 我已经做了一个工作原型我在哪里将用户名和密码存储在会话变量
  • 反向引用在 PHP 中不起作用

    最近我一直在研究 更多的是在实践中说实话 正则表达式 我注意到他的力量 我提出的这个要求 link https stackoverflow com questions 30380397 take the text up to a speci
  • phpActiveRecord 日期时间格式不正确

    当尝试使用 phpActiveRecord 在表中创建记录时 出现以下错误 Invalid datetime format 1292 Incorrect datetime value 2013 06 20 11 59 08 PDT for
  • 如何清除 APC 缓存而不使 Apache 崩溃?

    如果 APC 存储大量条目 清除它们会导致 httpd 崩溃 如果 apc clear cache user 花费的时间超过 phps max execution time 调用 apc clear cache 的脚本 将在之前被 php

随机推荐

  • QLineEdit 的背景图像

    如何设置背景图片QLineEdit 以下样式表不起作用 QLineEdit background image url images 13 png QLineEdit border 1px solid 000000 image work wi
  • 如何在Python中记录源文件名和行号

    是否可以装饰 扩展Python标准日志记录系统 以便在调用日志记录方法时它还记录文件和调用它的行号或者调用它的方法 当然 检查一下格式化程序 http docs python org library logging html formatt
  • Jenkins 多分支 - 如何扫描 jenkinsfile 放置在子模块上的分支?

    我有一个主存储库 其中包含一个子模块 其中包含 Jenkinsfile 有了这个 我想为该主存储库创建一个多分支管道作业 但这不起作用 当 Jenkinsfile 不在子模块中时它可以工作 但当 Jenkinsfile 位于子模块中时它不会
  • 在 HERE 地图中的标记上悬停时显示内容 Div

    我是这里的地图新手 需要在标记悬停时显示一个 div 我已经能够放置带有图标的标记 但现在需要显示带有一些额外信息的 div HERE 地图 API 是否提供此功能 任何文档 URL 或一段代码都将受到赞赏 注意 我正在使用 HERE 网络
  • 如何在 Twitter Bootstrap 中使用 CSS 将文本对齐到元素的中间?

    我在用引导程序 http twitter github com bootstrap javascript html alerts警报 这是我的成功警报消息 div class alert alert success a class clos
  • 调度程序未在 Spring Boot 中运行

    我创建了一个 Spring Boot 应用程序 我已经配置了包含调度程序方法的类startService 下面是我的代码 服务等级 package com mk service import org springframework bean
  • CSS 使文本左对齐并同时对齐

    有没有办法让文本左对齐并同时对齐 意思是左对齐之类的 有什么办法可以实现这一点吗 感谢帮助 您可能正在寻找最后一行的左对齐 text align justify text align last left
  • 如何让用户输入不区分大小写?

    我想创建一个函数来过滤我要打开的文件以及具体的月份和日期 这样 用户需要输入他们想要在哪个特定月份或日期分析哪个城市 文件 但是 我希望用户能够输入不区分大小写的内容 例如 用户可以输入 chicago CHICAGO ChIcAgO 它仍
  • 如何设置shell脚本的进程组

    如何设置shell脚本的进程组 我还希望所有子进程都位于同一个进程组中 我期望类似的东西setpgid in C As 普斯科西克指出 https stackoverflow com a 45112755在大多数 shell 中 通过激活作
  • 使用 WebFlux 的 Spring Boot 在测试中总是抛出 403 状态

    非常感谢您查看我的问题 我有一些奇怪的主题 我的 Spring Boot 测试不起作用 它们启动成功 但在向任何控制器发出请求时总是抛出 403 HTTP 状态 我有一些具有下一个依赖项的项目 buildscript ext kotlin
  • 多索引数据框 pandas 中的操作

    我需要处理大数据 csv 中的地理和统计数据 它包含来自地理行政和地统计的数据 城市 区位 地统计基本区划和区块构成层次指标 我必须为地理索引中数据的最大值的每个元素创建一个新列 data2 并将每个块值除以该值 对于每个索引级别 索引级别
  • 如何在不使用库(Metrics)的情况下制作MAE和RAE的函数?

    我的目标是创建平均绝对误差 MAE 和相对绝对误差 RAE 的函数 而不使用任何类型的库 例如库 Metrics 我尝试在 MAE 和 RAE 的函数内输入公式 mae lt function a b mean abs a b rae lt
  • Android WebView HTTP Cookie 在 API 21 中不起作用

    我有一个使用 WebView 和 HTTP cookie 的 Android 应用程序 此应用程序适用于运行 API 19 或更低版本的 Android 设备 API 21 不会保存 http cookie 以供以后参考 Android W
  • ffmpeg 连接并保留元数据流

    我正在尝试连接 GoPro Hero6 分割电影的多个文件以避免 FAT 4GB 限制 ffmpeg 非常适合此目的 但我需要在元数据流中编码的遥测数据 而 ffmpeg 默认情况下似乎不保留此数据 使用ffprobe命令你可以看到源视频有
  • 如何在 MDriven 中设置日期和时间选择器?

    我试图在 MDriven 中捕获日期和时间 但数据类型 DateTime 的默认值仅显示日期选择器 在 Web 中 但时间存储在持久层中 我又如何捕捉时间 我在wiki mdriven net https wiki mdriven net
  • 在xml中定义没有class属性的bean

    我是 Spring 世界的新手 在一次采访中 有人问我们是否可以在 XML 中创建一个 bean 而不指定class 也就是说 bean 只会有一个id属性 我对此没有答案 请告知我们是否可以在 Spring 中以 XML 形式创建一个 b
  • Android NDK - 在配置更改时强制库重建

    在 Eclipse 中更改构建配置时 有没有办法强制 Android NDK 重建特定库 我正在使用 Android NDK 构建一个 Android 项目来构建 C 库 我正在使用带有 Sequoyah 插件的 Eclipse 一切都已设
  • 是否有现有的 gem 或脚本可以将数字转换为 comp-3/压缩十进制格式?

    继续我将 COBOL 转换为 Ruby 程序的冒险 我必须将十进制数字转换为 comp 3 压缩十进制格式 有人知道一个简单的 Ruby 脚本或 gem 可以做到这一点吗 伯恩斯 Ruby 知道如何打包半字节 因此结果非常简单 def pa
  • fparsec 解析字符串序列

    我有一个用户输入文本 例如 abc def ghi 我想解析它以获取字符串列表 abc def I tried let str Parser lt gt many1Chars noneOf let listParser Parser lt
  • 如何识别访客用户的时间比会话通常存在的时间长

    我知道 我可以使用 Session getId 但它会随着时间的推移而改变 也许我不明白这些会议 据我所知 它在 php 运行时启动 并在 php 代码完成时删除 另一方面 我读到会话 ID 存储在 cookie 中 当用户再次打开您的网站