Olá, boa tarde,
No curso eu vi o Vinícius falando sobre como o cabeçalho de uma requisição http não pode ser alterado se você exibir alguma coisa, com um "echo" por exemplo, antes de chamar a função "header()". Pra testar esse comportamento eu utilizei o seguinte código:
echo 'teste';
$user = $this->userRepository->userByEmail($_POST['email']);
$correctPassword = password_verify($_POST['senha'], $user->password ?? '');
if (!$correctPassword) {
header('Location: /login?erro=1');
} else {
header('Location: /login?erro=2');
}
header('Location: /login?erro=3');
No meu sistema, pelo menos, não importa se tem "echo" ou não, se tem um ou múltiplos headers, no final o resultado sempre cai no "/login?erro=3" sem ocorrer nenhum erro de execução. Ao meu ver isso parece como se a requisição só fosse enviada realmente ao final de tudo, depois de executar o código inteiro. Devido a isso agora eu estou em dúvida se eu fiz algo de errado, ou se talvez seja alguma configuração do php que está diferente no meu sistema. Se alguém puder esclarecer isso pra mim fico muito agradecido.