Z tego co zrozumiałem z dokumentacji funkcji `strtotime`, użycie formatu składającego się z samej liczby od 1 do 12 oznacza rok zamiast miesiąca. Aby w formacie był miesiąc, należy użyć np. mm/dd, czyli "1/1", "2/1", ..., "12/1". Funkcja `date` pobierze liczbę dni miesiąca z timestampu, więc tak naprawdę nie ma znaczenia, czy dd będzie pierwszym dniem miesiąca, czy jakimkolwiek innym.
<?php
$miesiac = date('t', strtotime($_POST['miesiac'] . '/1'));
echo $miesiac;
?>