【发布时间】:2020-05-30 15:19:07
【问题描述】:
我正在尝试验证用户在 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>
【问题讨论】:
-
你能给我们看看
user input的例子吗?那个月份有前导零吗? -
@HarishST 我已经编辑了问题以包含一个示例和我的相关 HTML 代码。
-
只有月份和年份?没有日期?
-
@HarishST 是的,只有月份和日期,格式为 mm-yy
标签: php