Ver Mensaje Individual
  #1 (permalink)  
Antiguo 25/03/2011, 07:05
Avatar de kaninox
kaninox
 
Fecha de Ingreso: septiembre-2005
Ubicación: In my House
Mensajes: 3.597
Antigüedad: 18 años, 7 meses
Puntos: 49
Validando una fecha

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
  1. $di1 = str_replace("-","/",$_POST[date_input]);//fecha que viene de input y me cambia los - por /
  2.  
  3. //ahora veo si me ingresaron un dia como 1 o 01 y lo cambiamos lo mismo al mes
  4. $fecha_x1 = explode("/", $di1); //FECHA 1 Ingresada
  5. /**/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';}
  6. 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]";}
  7. /**/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';}
  8. 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';}
  9. elseif ($fecha_x1[1] == '9'){$mes1 = '09';}else{$mes1 = "$fecha_x1[1]";}
  10. $anio1 = $fecha_x1[2];
  11. $fecha_inicio = "$anio1-$mes1-$dia1";//ANIO MES DIA PRIMER INPUT
  12.  
  13. //luego cuando valido pregunto
  14. if ($_POST[date_input] == ""){echo "Debe ingresar la Fecha de Inicio";}
  15. 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
__________________
Gokuh Salvo al mundo. PUNTO!!!!