如果日期是<检查验证3个月

时间:2015-06-26 02:42:23

标签: php codeigniter validation date

我希望从此案例中获得验证。如果输入日期小于现在。因此,它会产生警报并重定向到主页。我写了这个,但它没有用。

        $dateEntry = array($current_employee->emp_dtentry);

        if ($dateEntry < strtotime('+3 months')) {
            echo "<script>alert('you don't have the right to access this menu')</script>";
            redirect('new_leave','refresh');
        }

感谢任何帮助,谢谢!

2 个答案:

答案 0 :(得分:4)

您将日期放入数组中,然后将其与时间戳进行比较。你为什么这样做?

假设$current_employee->emp_dtentry是Unix时间戳:

if ($current_employee->emp_dtentry < strtotime('+3 months')) {

如果它不是Unix时间戳并且是valid date format,你可以这样做:

if (strtotime($current_employee->emp_dtentry) < strtotime('+3 months')) {

如果它不是有效的日期格式,您需要使用DateTime::createFromFormat()来解析日期,然后进行比较。整个DateTime对象更容易做到。

// see manual format options
$empdtEntry = DateTime::createFromFormat('<format goes here>', ($current_employee->emp_dtentry); 
$current_employee->emp_dtentry);
$threeMonthsFromNow = new DateTime(+3 months);
if ($empdtEntry < $threeMonthsFromNow ) {

答案 1 :(得分:2)

当你重定向时,你的回声不会起作用。要么刷你的javascript,要么使用javascript来重定向。

使用flash:

 $dateEntry = $current_employee->emp_dtentry;
 if ($dateEntry < strtotime('+3 months')) {
    $this->session->set_flashdata("javascript", "<script>alert('you don't have the right to access this menu')</script>");
    redirect('new_leave');
 }

然后在new_leave视图中检查它是否存在并回显它:

if($this->session->flashdata('javascript')){
    echo $this->session->flashdata('javascript');
}

或使用javascript按以下方式执行:

 $dateEntry = $current_employee->emp_dtentry;
 if ($dateEntry < strtotime('+3 months')) {
    echo "<script>alert('you don't have the right to access this menu'); window.location.href='new_leave';</script>";
 }