Почему не происходит редиректа header?
ob_start() - самой первой строкой.
не закрывать в конце файлов ?>
еще байты бом (признак, что файл в utf) могут быть до <?php
У вас в файле db.php скорее всего после ?> идет либо пробел, либо перенос строки, он и выводится перед функцией header().