Php 如何为下拉列表设置月和日的验证

Php 如何为下拉列表设置月和日的验证,php,validation,Php,Validation,如何通过出生日期验证和显示其年龄 if ($_POST['DateOfBirth_Month'] == 'January') { $DateOfBirth_Month = $_POST['DateOfBirth_Month'];// January } else if ($_POST['DateOfBirth_Month'] == 'February') { $DateOfBirth_Month = $_POST['DateOfBirth_Month'];// Februa

如何通过出生日期验证和显示其年龄

if ($_POST['DateOfBirth_Month'] == 'January') {
     $DateOfBirth_Month = $_POST['DateOfBirth_Month'];// January
} 
else if ($_POST['DateOfBirth_Month'] == 'February') {
     $DateOfBirth_Month = $_POST['DateOfBirth_Month'];// February
}

if ($_POST['DateOfBirth_Day'] == '1') {
    $DateOfBirth_Day = $_POST['DateOfBirth_Day'];// 1
} 
else if ($_POST['DateOfBirth_Day'] == '2') {
    $DateOfBirth_Day = $_POST['DateOfBirth_Day'];// 2
}



if(is_numeric($_POST['DateOfBirth_Year']) && $_POST['DateOfBirth_Year'] > 1969)
{     
    $DateOfBirth_Year = $_POST['DateOfBirth_Year'];
 } 
else if (is_numeric($_POST['DateOfBirth_Year']) && $_POST['DateOfBirth_Year'] < 1970)
{
     echo'<p><font color ="red">Please enter 1970 and above!</font></p>'; 
} 
else 
{
     echo '<p><font color="red">Enter NUMBER for the year of date of birth!</font></p>'; 
} 

就个人而言,我更喜欢在客户端使用JS进行验证。您可以尝试使用正则表达式

/^\d{2}\/\d{2}\/\d{4}$/

验证日期。你可能会从

中得到一些想法,让我们假设我发布了我的生日:

$_POST["DateOfBirth_Year"] = 1980;
$_POST["DateOfBirth_Month"] = "October";
$_POST["DateOfBirth_Day"] = 20;
我使用此功能处理邮件

function POST($var) {
  if(!isset($_POST[$var])) return null;
  return $_POST[$var];
}
首先,我们阅读输入

$dob_m = POST('DateOfBirth_Month');
$dob_y = intval(POST('DateOfBirth_Year'));
// lets allow say 24th to be 24
$dob_d = intval(POST('DateOfBirth_Day'));
为了便于检查和获取月份索引,让我们创建月份数组

$months = array("January", "February", "March", "April", "May", "June", "July",
    "August", "September", "October", "November", "December");
现在检查一下这个月

$month_ok = array_search($dob_m,$months)!==false;
if(!$month_ok) return; // some reasonable error handling should be here
…并获取月份索引

$dob_m = array_search($dob_m,$months) + 1;
然后,我们应该使用函数验证1980年2月30日的日期是否无效

最后,让我们使用对象计算年龄


“我的年份”是文本框,输入putifis_numeric$_POST['DateOfBirth_year']和&$_POST['DateOfBirth_year']>1969{$DateOfBirth_year=$_POST['DateOfBirth_year'];否则如果是_numeric$_POST['DateOfBirth_year']和&$POST['DateOfBirth_year']<1970{echo'请输入1970及以上!

>{echo'输入出生年份的数字!

';}你能澄清你的问题是什么吗?并直接将任何新代码编辑到问题中我想从下拉列表中设置月和日的验证,特定的月份有特定的日期,如2月id 28天……我还想显示年龄到出生日期,那么你有什么困难?你上面的代码中有什么不起作用?你必须始终执行val服务器端的验证。客户端只是让用户体验更好而已。只是好奇而已,但是客户端的验证应该确保服务器端的安全入口,对吗?我的意思是,有效的客户端入口不能突然变成无效的服务器端入口;特别是在使用ajax时。是否可以禁用Javascript?如果人们愿意,是否可以注入错误数据基本上不信任来自客户端的数据
$stamp = mktime(0,0,0,$dob_m,$dob_d,$dob_y);
$dob_ok = date("Y",$stamp)==$dob_y &&
    date("n",$stamp)==$dob_m && date("j",$stamp)==$dob_d;
if(!$dob_ok) return; // proper error handling here, too
$dob_dt = new DateTime(date("Y-m-d H:i:s",$stamp));
$now_dt = new DateTime("now");
$age = $dob_dt->diff($now_dt)->format("%y");

if($age<0 || $age>125) return; // error handling here
echo $age; // should be my age