En principio yo haria lo que ha dicho Bonez con expresiones regulares:
Código PHP:
if (ereg("^[0-9]{1,2}/[0-9]{1,2}/[0-0]{4}$",$fecha)){
//Fecha valida
}else {
//Fecha no valida
}
"^[0-9]{1,2}/[0-9]{1,2}/[0-0]{4}$" esta cadena básicamente dice que tiene que empezar por uno o dos dígitos de 0 a 9 luego / uno o dos digitos luego / y cuatro digitos.
Creo que la expresión regular es correcta, si no es así que alguien lo diga :P
En caso de que quisieras comprobar la fecha numéricamente yo haría lo anterior y algo como:
Código PHP:
list($dia, $mes, $ano) = explode("/", $fecha);
if (checkdate($mes,$dia,$ano)){
//Fecha correcta
}else{
//Fecha incorrecta
}
Que comprueba años bisiestos, si los meses tienen 31 días y todo eso.
También para comprobar si las fechas son mayores o menores tienes las funciones de marcas de tiempo en php, como mktime()
Código PHP:
if(mktime(23,59,59,$mes,$dia,$ano)<mktime()){
//La fecha ya ha pasado
}else{
//La fecha es futura
}
En realidad todas las funciones de php con las fechas dan mucho juego.