使用 laravel 为新访客运行一次代码

Posted

技术标签:

【中文标题】使用 laravel 为新访客运行一次代码【英文标题】:Run code once for new visitors with laravel 【发布时间】:2021-04-08 15:16:24 【问题描述】:

我正在使用 laravel 8,我正在创建一个全球网上商店。

有两种货币可供选择:美元和欧元。

但是当新访问者访问我的网站时,我怎样才能只运行一次代码呢?

我想要做的是检查是否有人住在欧洲并将货币设置为欧元,否则将其设置为美元。

但此代码应该只对每个访问者运行一次,因为他们可以更改货币并且它不应该自动转回原始货币。

【问题讨论】:

一种方法是将货币存储在cookie中,首先检查cookie是否存在,如果不存在,则根据地理位置存储货币(有一个laravel包),否则使用cookie值 这些是访客用户还是经过身份验证的用户? Coockie 是要走的路,Laravel 可以通过 Coockies 很好地处理这个问题。 @Rwd 是的,有来宾用户,但我设法通过检查是否有空 cookie 并首次自动设置来使用 Anurat Chapanond 解决方案。然后,用户可以随时手动编辑 cookie。 【参考方案1】:

我会从 Request 对象中获取他们的 IP 地址,或者通过控制器方法中的 DI-ing 或帮助器 request()->ip()。通过地理定位 API 运行 IP,并将其记录到您的数据库中。

可能希望通过创建帐户来触发此操作,或者对旧记录进行一些垃圾收集,或者访问者位置日志可能会变得有点麻烦。

【讨论】:

获取他们的IP地址和他们的位置不是问题,我可以弄清楚。但问题是如何为每个访问者只运行一次此代码,无论他们是否有帐户。 通过记录它。或者通过返回一个脚本首先检查的没有过期的 cookie。没有办法让他们当然不会清除,但这可能很少见,不用担心。

以上是关于使用 laravel 为新访客运行一次代码的主要内容,如果未能解决你的问题,请参考以下文章

[MRCTF2021]ez_laravel复现

Laravel Echo - 允许访客连接到出席频道

记一次monolog的RotatingFileHandler使用

Laravel 路由问题:自动重定向到根文件夹

如何在 Laravel 中仅向访客用户显示或隐藏我的表的一部分?

Laravel 未仅与访客用户一起定义