加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

php – 表单日期验证问题

发布时间:2020-12-13 18:09:16 所属栏目:PHP教程 来源:网络整理
导读:我正在构建一个简单的日期验证脚本,我只是偶然发现了一个大问题. $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 = 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);

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读