在php中验证到期日期

时间:2020-05-30 05:32:38

标签: php

我正在尝试验证用户在PHP中输入的信用卡到期日期。这是我到目前为止所拥有的:

if (!isset($_POST["cardDate"])) {
        header("location:payment.php");
        exit();
    }
    else {
        $cardDate=$_POST["cardDate"];

        if ($cardDate=="") {
        $err_msg .="<p>Please enter the credit card expiration date.</p>";

    }   
    else {
        if (!preg_match("/^(0[1-9]|1[0-2])[-][0-9]{2}$/", $cardDate)) {
           $err_msg .= "<p>The expire date format is not correct!</p>";

        }
        else {
            $currentDate = date('m/y');
            $exp = strtotime($cardDate);
            $current = strtotime($currentDate);
            if ($current>$exp) {
                $err_msg .= "<p>Credit card has expired";
            }
        }
    }
    }

该代码当前无法正常运行,我认为这是因为用户将以“ mm-yy”格式输入到期日期,并且我不确定代码的$ currentDate部分是否传达了该消息。关于PHP需要更改哪些内容以验证到期日期,有人是否有任何建议?输入日期的示例为05/19或11/20。然后,通过将代码与今天的日期(05/20)进行比较,该代码将匹配05/19还是11/20已经通过。卡的到期日期必须在当前日期之后。 HTML代码

<p><label for="cardDate">Credit card expiration date</label>
<input type="text" name="cardDate" id="cardDate" maxlength="5" size="5" required="required" placeholder="mm-yy" /></p>

1 个答案:

答案 0 :(得分:0)

使用PHP DateTime类尝试此操作。 请注意,您应严格确保用户输入的格式正确。

来自PHP文档:

如果间隔表示一个负时间周期,则

invert为1,则为0 否则。

na.omit(ifelse(ex<12,ex,NA))

使用以下文档了解更多信息:

PHP DateTime

相关问题