Hola en verdad está un poco complicado el tema pero en cuanto a la cuestión de las fechas lo que quería señalar es q es más sencillo plantearlo de esta forma (habría q verificar primero que $fecha1 < $fecha2 y que $fecha1 > al día actual):
De esta forma me parece más legible. Saludos.