日付のチェックを行うには、checkdate関数を使用します。
引数に「月」、「日」、「年」の順番に渡せば、正しい日付の場合はtrue、正しくない日付の場合はfalseを返します。
// 2009年2月28日でチェック(存在している)
$year = 2009;
$month = 2;
$day = 28;
var_dump( checkdate($month, $day, $year) ); // bool(true) と表示される
// 2009年2月29日でチェック(存在していない)
$year = 2009;
$month = 2;
$day = 29;
var_dump( checkdate($month, $day, $year) ); // bool(false) と表示される