Una posible forma es convertir la fecha de formato. Poniendo primero el valor del año, luego el valor del mes y por último el día. Así, al comparar las fechas como si fueran cadenas normales, se comparará primero el año, luego el mes y por último el día. Casualmente es el formato de las fechas de MySQL, por lo que se puede usar este formato para poder hacer la conversión y luego la comparación.
Puedes usar alguna función que te convierta la fecha de formato, como el que encuentras en este artículo de cambio de formato de fechas entre español y MySQL.
function cambiarFormatoAMysql($fecha){
preg_match( '/([0-9]{1,2})\/([0-9]{1,2})\/([0-9]{2,4})/', $fecha, $mifecha);
$lafecha=$mifecha[3]."-".$mifecha[2]."-".$mifecha[1];
return $lafecha;
}
Luego, apoyándote en esta función, puedes crear otra función que calcula si es una fecha futura. Esta función devuelve un true en caso que la fecha sea futura, o un false en caso que sea pasada.
function esFutura($fecha_espanol) {
$fecha_origen = cambiarFormatoAMysql($fecha_espanol);
$fecha_hoy = date('Y-m-d');
if($fecha_origen > $fecha_hoy) {
return true;
}
return false;
}
Las podrías usar más o menos de esta manera:
if(esFutura('30/06/2018')) {
echo "\n es futura";
} else {
echo "\n es pasada";
}
if(esFutura('02/12/2019')) {
echo "\n es futura";
} else {
echo "\n es pasada";
}
Solo ten en cuenta que la fecha que compruebes debe estar en formato dd/mm/aaaa. Si tuviera un formato iregular como d/m/aa (2/3/19) no te serviría. En ese caso buscaría otra estrategia porque estas funciones requieren el formato de dos dígitos para el día, dos dígitos para el mes y 4 dígitos para el año.