我正在尝试验证用户在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>
答案 0 :(得分:0)
使用PHP DateTime类尝试此操作。 请注意,您应严格确保用户输入的格式正确。
来自PHP文档:
如果间隔表示一个负时间周期,则invert为1,则为0 否则。
na.omit(ifelse(ex<12,ex,NA))
使用以下文档了解更多信息: