Se me ocurre que:
Código PHP:
$d = $_POST['dia'];
$m = $_POST['mes'];
$a = $_POST['anio'];
$minimo = 18;
if(mktime(0, 0, 0, $m, $d, $a) > mktime(0, 0, 0, date('n'), date('j'), date('Y') - $minimo)) {
die('No tienes 18 años aún');
} else {
die('Si tienes 18 o más');
}
Lo que hacemos aquí es calcular la marca de tiempo UNIX para la fecha de nacimiento que nos dió el usuario, y eso lo comparamos con la correspondiente a exactamente hace 18 años. Si la primera es mayor, quiere decir que el usuario aún no cumplió sus 18 años, pues nació en una fecha posterior.
http://www.php.net/mktime
Un saludo,