abr
16
2014

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.

Written by Luis com S in: PHP,Posts Rápidos | Tags:, ,

Deixe um Comentário

Loading Disqus Comments ...
Loading Facebook Comments ...

Nenhum comentário »

RSS feed for comments on this post. TrackBack URL


Leave a Reply


Time limit is exhausted. Please reload CAPTCHA.

Design: TheBuckmaker.com Web Templates