使用PHP从表单输入进行日期验证
我有一个包含如下HTML代码的表单:使用PHP从表单输入进行日期验证,php,html,date,Php,Html,Date,我有一个包含如下HTML代码的表单: <div> <label for="dateCheckin">Date Checking in</label> <input type="date" name="dateCheckin"> </div> 登记日期 我尝试使用PHP检查所选日期是否至少距离当前日期2周。当我运
<div>
<label for="dateCheckin">Date Checking in</label>
<input type="date" name="dateCheckin">
</div>
登记日期
我尝试使用PHP检查所选日期是否至少距离当前日期2周。当我运行代码时,有一个未定义的索引:dateCheckin
$checkinDate = strtotime($_POST['dateCheckin']);
if ($checkinDate){
$today = time();
$diff = $checkinDate->diff($today)->days;
$diff /= 7;
$diff = floor($diff);
if ($diff < 2){
echo "Please enter a valid date.";
}
} else{
echo "Please enter a valid date.";
}
$checkinDate=strotime($\u POST['dateCheckin']);
如果($checkinDate){
$today=时间();
$diff=$checkinDate->diff($today)->天;
$diff/=7;
$diff=楼层($diff);
如果($diff<2){
echo“请输入有效日期。”;
}
}否则{
echo“请输入有效日期。”;
}
约会是很棘手的,你用的是最难的方式
我强烈建议使用DateTime
对象,您将得到如下结果:
<div>
<label for="dateCheckin">Date Checking in</label>
<input type="date" name="dateCheckin">
</div>
$checkinDate=DateTime::createFromFormat('Y-m-dh:i:s',$\u POST['dateCheckin']);
如果($checkinDate){
$TwoweekDate=新的日期时间(“现在+2周”);
如果($checkinDate<$twoWeeksDate){
echo“请选择以下日期之前的日期:”.$TwoweekDate->格式('d/m/Y');
}
}否则{
echo“请输入有效日期。”;
}
确保将日期格式更改为输入和输出的正确格式。试试这个。我建议您使用
DateTime()
对象而不是time()
函数
$checkinDate = new DateTime('2021-05-14 09:52:52'); //use your actual POST value here
if ($checkinDate){
$today = new DateTime();
$diff = $checkinDate->diff($today);
$days= $diff->format('%a');
if($days>14){
echo "2 Weeks done. Please enter a new date";
}
else{
echo "Not done 2 weeks yet.";
}
}
您的数据没有传递到POST方法中,因此会出现未定义的索引错误
<form action="Your Action page" Method="POST">
<label for="dateCheckin">Date Checking in</label>
<input type="date" name="dateCheckin">
<button type="submit"></button>
</form>
登记日期
看起来您可能正在使用PHP-CLI运行此命令?尝试使用PHP内置的web服务器并运行php-S localhost:8000.php
。此外,在没有表单元素的情况下发布时也会遇到问题。我建议你看一下以下内容:可能不是使用post方法,而是使用表单元素谢谢。我根据您的解决方案修复了代码,但是仍然存在未定义的索引错误。您知道发生此错误的原因吗?您的$\u POST
变量没有键dateCheckin
,您需要将其更正为其他项,或者其他数组也有相同的问题<代码>未定义索引仅表示您试图通过一个不存在的键或索引访问数组。@Tran如果这确实解决了您的问题,请接受此答案,以便具有相同问题的其他人可以知道这一点。