在PHP中验证日期

时间:2016-01-25 08:13:58

标签: php mysql

我需要curl_setopt($ch, CURLOPT_VERBOSE, 1); 以下validate,我放在dates database中。如果datetime formcheck并且它有效,我name之前我会empty,但它不适用于日期:

function validation($data, $files) {
    $errors= array();
    if (empty($data['name'])){
        $errors['name'] = get_string('error:name', 'carhire');
    }
    return $errors;
    //Here the dates won't work:
    if ($data['datefrom'] < $data['dateuntil']) {
        $errors['dateuntil'] = 'ERROR';
    }
    return $errors;
}

我缺少什么?谢谢您的帮助。

1 个答案:

答案 0 :(得分:1)

如果您执行上面显示的功能,它将无法正常工作,因为您在结束日期之前可以通过&#34;验证&#34;。

删除第一个return $errors;

function validation($data, $files) {
            $errors= array();
            if (empty($data['name'])){
                $errors['name'] = get_string('error:name', 'carhire');
            }
            return $errors; // <--- this will exit the function
            //Here the dates won't work:
            if ($data['datefrom'] < $data['dateuntil']) {
                $errors['dateuntil'] = 'ERROR';
            }
            return $errors;
}

由于这不是解决方案,我有另一个输入。 (需要php 5.2 +)

function validation($data, $files) {
            $errors= array();
            if (empty($data['name'])){
                $errors['name'] = get_string('error:name', 'carhire');
            }
            //Here the dates won't work:
            $date_from = new DateTime($data['datefrom']); // example 2016-01-18 08:55:00
            $date_until = new DateTime($data['dateuntil']); // example 2016-01-19 08:55:00
            if ($date_from < $date_until) {
                $errors['dateuntil'] = 'ERROR';
            }
            return $errors;
}

我用评论中陈述的值测试了它,它对我有用(我收到了错误消息)。 如果它不起作用,请确保在数组中正确设置日期值。