gpt4 book ai didi

php - 表单日期验证问题

转载 作者:可可西里 更新时间:2023-11-01 12:54:10 25 4
gpt4 key购买 nike

我正在构建一个简单的日期验证脚本,但我偶然发现了一个大问题。

$correct_date = FALSE;
if ($legal_month == $month_wozero || $legal_month == $month_wzero) {
if ($legal_day == $day_wzero || $legal_day == $day_wozero) {
if ($legal_year == $year)
$correct_date = TRUE;
}
}

$legal_day, $legal_month, $legal_year = user input

$day_wozero/wzero, $month_wozero/wzero, $year = server time

用户需要输入他们下订单的日期。但很明显,这永远不会与我设置脚本的方式一起工作。公司所在地距离服务器 -2 小时。但这并不重要,因为有人可以在美国的任何地方下订单。因此,如果他们在纽约,可能是第二天,而公司在洛杉矶,日期会有所不同。它也可能是该月的最后一天,纽约的月份也与洛杉矶不同。

在我看来,解决这个问题的唯一方法是构建一个完整的 if/else 嵌套规则集,以针对特定时间的时间和月份差异进行调整。但我几乎可以肯定,必须有另一种我不知道的解决方法。

有什么建议吗?

最佳答案

我会选择添加一个时区下拉列表,并尝试使用 JS 为他们选择正确的时区,这样您就可以高枕无忧了,因为它是从客户端提供给您的。

在您的服务器上收到数据后,您应该使用此信息将用户日期转换为服务器的时区并进行比较,或者创建一个在用户提供的时区中的服务器日期值并进行检查。

示例

// We'll want this for later
$server_timezone = date_default_timezone_get();

// Did the user supply a timezone and is it valid?
if(
$_POST['user_supplied_timezone'] !== '' &&
date_default_timezone_set($_POST['user_supplied_timezone']) === TRUE
)
{
// This accepts yyyy/m/d or yyyy/mm/dd formats
if(
$_POST['user_year'] === date('Y') &&
($_POST['user_month'] === date('n') || $_POST['user_month'] === date('m')) &&
($_POST['user_day'] === date('j') || $_POST['user_day'] === date('d'))
)
{
// TRUE
}
}

// It is officially "later"
date_default_timezone_set($server_timezone);

关于php - 表单日期验证问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29975902/

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