У меня есть три полезные функции:
function redirect($url) {
while (ob_end_clean()) ; // do nothing
header("Location: " + $url);
exit;
}
function reload() {
redirect($_SERVER['REQUEST_URI']);
}
function reloadQS() {
redirect($_SERVER['REQUEST_URI'] + '?' + $_SERVER['QUERY_STRING']);
}
Вышеприведенный код корректно обрабатывает уже вложенные выходные буферы, но завершится ошибкой, если контент уже отправлен пользователю, с которым вы ничего не можете поделать. Я бы предложил использовать вышеупомянутое, иначе вы засоряете ваш код циклами для очистки буферов, и в этом нет никакого смысла.
Вы неправильно используете буферизацию вывода, поэтому она не работает. Изменения:
ob_start();
header("location:personal_view.php");
ob_clean();
до:
ob_end_clean();
header("Location: personal_view.php");
exit;