in reply to Roll your own date validation

I agree with Corion.

Try changing your statement to :-

if (($month == 1 && $day > 29) || ($month == 9 && $day > 30) || ($month == 11 && $day > 30))

This allows you to match '09' (as well as 9)

elbow