gpt4 book ai didi

PHP 过期日期

转载 作者:可可西里 更新时间:2023-11-01 07:58:48 25 4
gpt4 key购买 nike

背景信息

我正在为游戏 garrys mod 创建一个捐赠/购买系统。当用户通过 paypal 捐赠时,我有处理 ipn 并将数据输入数据库的 php 代码,它还会生成一个序列 key 并将其通过电子邮件发送给用户,然后用户可以在游戏中输入它,当用户在游戏中输入序列时,它会检查数据库查看 key 是否有效,然后执行相关的lua代码。到目前为止,该系统运行良好,但捐赠包会持续一定的时间,30 天、90 天、180 天和 365 天。

我想要实现的是,当用户在游戏中输入 key 时,我将拥有存储玩家 steam id 的 lua 代码以及他们兑换它的日期以及包裹将持续多长时间。我将设置一个 cron 作业来运行一个脚本来检查数据库是否使用了 key ,如果 key 已被使用,它将检查是否,例如,自他们兑换 key 以来已经过去了 30 天,如果它低于30 天如果超过 30 天则什么都不做,那么它会将表中的值从 0 更改为 1。

问题

我真正想弄清楚的部分是如何存储日期和检查日期,最初我以为我会使用一年中的某一天,但后来出现了将年份从 365 更改为 0 的问题如果有人在 12 月购买了 90 天,就会出现错误。那么我怎样才能可靠地计算年份的变化呢?

感谢所有以极快的速度发布答案的人,我想我现在已经有足够的工作要做了,再次感谢您的宝贵时间

最佳答案

嗯,我不知道你的数据库结构,但假设它是这样的:

user_table
-----------------------------------------
user_id | date_of_redeem | subscription
-----------------------------------------
user1 | 2014-02-01 | 90
user2 | 2014-05-18 | 365
user3 | 2014-07-22 | 180

因此,如果仅使用 SQL 语句,您可以使用诸如 DATE_SUB 之类的东西。将 date_of_redeem 与今天的日期减去订阅金额进行比较。如果 date_of_redeem 的值更高,那么您将得到一个结果,否则它将返回一个空结果集。

SELECT *
FROM `user_table`
WHERE `date_of_redeem` > DATE_SUB(NOW(), INTERVAL `subscription` DAY) AND `user_id` = 'desired_user_id'

编辑:上述查询的 SQL Fiddle:http://sqlfiddle.com/#!2/f95ea/11 (只需将 user3 更改为任何用户 ID 即可检查它们是否返回任何结果。

如果你想得到一个包含所有订阅到期日期的表格,那么你可以这样做:

SELECT `user_id` AS `User`, (DATE_ADD(`date_of_redeem`, INTERVAL `subscription` DAY)) AS `Subscription Ends`
FROM `user_table`

用于此的 SQL Fiddle:http://sqlfiddle.com/#!2/f95ea/9

关于PHP 过期日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25265323/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com