Código PHP:
//supongamos que la fecha viene en el siguiente formato 2009-12-09
//se realiza un explode
$fecha = 2009-12-09;
$fecha = explode("-",$fechaInicio);
//se realiza un cambio a entro para su comparacion
$anio = $fecha[0];
$mes = $fecha[1];
$dia = $fecha[2];
//validacion de que sea fecha valida, mes y dias
if($fecha == "" || $mes < 1 || $dia < 1 || $anio < 2000)
//aki viene con errores notificamos
else
//no viene con errores entonces validamos
if($mes == 2)
{//si mes es febrero
//calculamos si el año es bisiestro o no para respectivos chequeo de los dias del mes de febrero
if( ($anio % 4 == 0) && ( ($anio % 100 != 0) || ($anio % 400 == 0) ) )
{ //el año es bisiestro
if($dia > 29)
//fecha incorrecta
}else
{//no es bisiestro
if($dia > 28)
//fecha incorrecta
}
}
else
if($mes == 4 || $mes == 6 || $mes == 9 || $mes == 11)
//si mes es abril, o junio, o septiembre o noviembre
if($dia > 30)
//fecha incorrecta
else
if($mes == 1 || $mes == 3 || $mes == 5 || $mes == 7 || $mes == 8 || $mes == 10 || $mes == 12)
//si mes es enero, o marzo, o mayo, o julio, o agosto, u octubre o diciembre
if($dia > 30)
//fecha incorrecto
//fecha incorrecto = aki enviaremo un mensaje o redireccionamos a otro url para informar que la fecha es incorrecta