使用PHP从表单输入进行日期验证

使用PHP从表单输入进行日期验证,php,html,date,Php,Html,Date,我有一个包含如下HTML代码的表单: <div> <label for="dateCheckin">Date Checking in</label> <input type="date" name="dateCheckin"> </div> 登记日期 我尝试使用PHP检查所选日期是否至少距离当前日期2周。当我运

我有一个包含如下HTML代码的表单:

<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如果这确实解决了您的问题,请接受此答案,以便具有相同问题的其他人可以知道这一点。