У вас может быть 2 проблемы здесь.
1. Вы полностью удаляете URL-запрос 'username'?
Пример:
Если у вас есть «www.example.com?username=», он все равно будет установлен и будет запущен первый блок оператора if.
2. Вызывается ли заголовок перед отправкой информации клиенту?
header () должен быть вызван перед любым HTML, чтобы он вообще работал.
заголовок ()
Помните, что header () должна вызываться перед отправкой любого фактического вывода, либо обычными тегами HTML, пустыми строками в файле, либо из PHP. Это очень распространенная ошибка при чтении кода с включенными или требующимися функциями или другой функцией доступа к файлу, с пробелами или пустыми строками, которые выводятся до вызова header (). Та же проблема существует при использовании одного файла PHP / HTML.
Если вы хотите перенаправить пользователя после отправки ему информации, вы можете использовать JavaScript:
<?php
if(isset($_GET['username']) && $_GET['username'] != ''){
echo"";
}else {
echo '<script>window.location.href = "error.php';</script>";
}
?>
Источник: PHP документация