hola muchachos tengo un formulario donde recojo una fecha por alguna razón teniendole un calendario a los usuarios igual ingresan cosas incoherentes entonces tuve que empezar a validar que me ingresen una fecha correcta y real.
entonces tengo algo como :
Código PHP:
Ver original$di1 = str_replace("-","/",$_POST[date_input
]);//fecha que viene de input y me cambia los - por /
//ahora veo si me ingresaron un dia como 1 o 01 y lo cambiamos lo mismo al mes
$fecha_x1 = explode("/", $di1); //FECHA 1 Ingresada /**/if ($fecha_x1[0] == '1'){$dia1 = '01';}elseif ($fecha_x1[0] == '2'){$dia1 = '02';}elseif ($fecha_x1[0] == '3'){$dia1 = '03';}elseif ($fecha_x1[0] == '4'){$dia1 = '04';}
elseif ($fecha_x1[0] == '5'){$dia1 = '05';}elseif ($fecha_x1[0] == '6'){$dia1 = '06';}elseif ($fecha_x1[0] == '7'){$dia1 = '07';}elseif ($fecha_x1[0] == '8'){$dia1 = '08';}elseif ($fecha_x1[0] == '9'){$dia1 = '09';}else{$dia1 = "$fecha_x1[0]";}
/**/if ($fecha_x1[1] == '1'){$mes1 = '01';}elseif ($fecha_x1[1] == '2'){$mes1 = '02';}elseif ($fecha_x1[1] == '3'){$mes1 = '03';}elseif ($fecha_x1[1] == '4'){$mes1 = '04';}
elseif ($fecha_x1[1] == '5'){$mes1 = '05';}elseif ($fecha_x1[1] == '6'){$mes1 = '06';}elseif ($fecha_x1[1] == '7'){$mes1 = '07';}elseif ($fecha_x1[1] == '8'){$mes1 = '08';}
elseif ($fecha_x1[1] == '9'){$mes1 = '09';}else{$mes1 = "$fecha_x1[1]";}
$anio1 = $fecha_x1[2];
$fecha_inicio = "$anio1-$mes1-$dia1";//ANIO MES DIA PRIMER INPUT
//luego cuando valido pregunto
if ($_POST[date_input] == ""){echo "Debe ingresar la Fecha de Inicio";}
if (!checkdate($fecha_x1[1], $fecha_x1[0], $fecha_x1[2])){echo "La Fecha es incorrecta";}}
Todo ok pero probando me di cuenta que si ingreso 1568 el checkdate no funciona me valida igual, y si ingreso texto :/ también me lo valida alguna sugerencia.
ya probé también con strlen pero después me di cuenta que la fecha puede ser de 10 caracteres como menos de 10 en el caso de los días y meses y debería validarmelos igual, asi que lo omití.
Saludos