Safado tem que morrer
Quando o script continua executando após a chamada do header, é hora de mata-lo.
Recentemente estava revisando um código antigo e me deparei com alguns problemas de redirecionamento usando a função header.
Aqui um redirecionamento simples:
1 | header('Location: redirected.php'); |
Porém há um detalhe nesta função, usando ela para redirecionar não impede que o código subsequente seja executado.
Dados os arquivos a seguir, index.php e redirected.php
index.php
1 2 3 4 | <?php header('Location: redirected.php'); sleep(10); echo 'After'; |
redirected.php
1 | <?php echo 'Redirected'; |
Ao acessar o index.php, o esperado é que rapidamente seja redirecionado para o outro arquivo, o que não acontece, pois o arquivo continua executando o próximo comando (sleep) até redirecionar.
Para sanar esse comportamento devemos adicionar o comando die ou exit imediatamente após o comando header, impedindo assim que o script continue.
index.php
1 2 3 4 | <?php header('Location: redirected.php'); exit; sleep(10); echo 'After'; |
Espero ter ajudado.
Dúvidas, críticas e sugestões são sempre bem vindas.
Deixe um Comentário
Nenhum comentário »
RSS feed for comments on this post. TrackBack URL