Берем двойной листок в клеточку, пишем фамилию, число, месяц, ниже - "работа над ошибками".
1) Читаем почему нельзя хранить данные о состоянии в инпутах(в том числе хидден).
2) Нет листинга start.php и остальных, если там есть какая-то обработка этого куска -
$q = 0; // номер текущего вопроса
то еще нормально (хотя как правильное решение все равно не подходит), иначе думаем как будет работать при $q = 0;
3) что будет если $_POST['q'] = -2? И как такое возможно?
4) Учим пхп:
header()
Остальные вопросы на дом в качестве самостоятельной работы.