Archive for the ‘PHP’ Category

Melhor forma de redirecionar de uma página para um outro endereço

Existem algumas formas simples de se redirecionar um site para uma outra url. Esta técnica é útil em várias situações, como por exemplo, voltar para a página de listagem, logo após salvar uma informação.

Vamos para as formas de se fazer; a primeira forma é utilizando o simples HTML, através da tag <meta>, combinada com o atributo http-equiv=”refresh”:

<meta http-equiv="refresh" content="5 url=https://thiagobfiorenza.wordpress.com">

O atributo content=5 é o tempo (5 segundos) de espera para ser redirecionado. Geralmente neste tempo, coloca-se uma mensagem para que o usuário veja, do tipo “O site está sendo redirecionado em 5 segundos. Caso não aconteça clique aqui.”

A segunda solução é a seguinte, utilizando Javascript:

<script type="text/javascript">
location.href = "https://thiagobfiorenza.wordpress.com";
</script>

O único requisito que exige essa forma é que o navegador do usuário possua o Javascript habilitado.

A última e minha preferida para este fim (redirecionar sem espera de tempo) é utilizando o clássico PHP:

header('location:https://thiagobfiorenza.wordpress.com'); die();

O único cuidado que se deve ter para utilizar-se do PHP para o redirecionamento é que este deve vir antes de qualquer código escrito na tela (echos, prints ou códigos HTML). O die() que aparece no final deste código é para garantir que o header() seja processado no exato momento em que foi chamado, e não após todo o processamento da página.

E, como diriam os desenhos do Pernalonga, That’s all Folks (Isto é tudo, pessoal)!

Anúncios

Melhor forma de se obter extensão de arquivo em PHP

Em algum momento na sua vida de programador você terá que obter / encontrar / separar / isolar a extensão de um certo arquivo (não estou me referindo ao mime-type dos arquivos neste post). Existe pelo menos 3 formas práticas de solucionar este caso.

A primeira, e talvez a mais utilizada, é com a função substr(), que pega os caracteres de um texto a partir da posição das letras (valor negativo, conta de trás para frente). A aplicação se faz desta forma:


$arquivo = 'nome.txt';

echo substr($arquivo, -3);

//escreve 'txt'

O problema de utilizar este modo é que quando a extensão do arquivo for de mais de três caracteres, a extensão fica cortada:


$arquivo = 'nome.mpeg';

echo substr($arquivo, -3);

//escreve 'peg'

A adaptação para este problema ficaria assim:


$arquivo = 'nome.mpeg';

$arquivo = substr($arquivo, -4);

if($arquivo[0] == '.'){

      $arquivo = substr($arquivo, -3);

}

echo $arquivo;

//escreve 'mpeg'

Porém, ainda assim, se existir uma extensão com mais de quatro caracteres, esta solução não funciona.

A segunda forma é utilizando a função strrchr() que retorna o que vem depois de um caractere estipulado, ficando:


$arquivo = 'nome.mpeg';

echo strrchr($arquivo, '.');

// escreve '.mpeg'

Se o objetivo é trazer a extensão juntamente com o ponto, esta é a melhor forma. Porém, se não é este o objetivo, deve-se contar então com o auxílio da função str_replace():


$arquivo = 'nome.mpeg';

echo str_replace('.','',strrchr($arquivo, '.'));

// escreve 'mpeg'

E finalmente, a minha forma preferida de se adquirir a extensão de um arquivo. É através da função explode() para separar o nome do ponto e a função end() para encontrar a última posição do array formado, que no caso é o que vem depois da vírgula:


$arquivo = 'nome.mpeg';

echo end(explode(".", $arquivo));

//escreve 'mpeg'

Tanto a segunda quanto a terceira solução funcionam muito bem e podem ser usadas junto com a função strtolower() que transforma o nome inteiro do arquivo para letras minúsculas, ideal para urls:


$arquivo = 'Nome.MPEG';

echo strtolower(end(explode(".", $arquivo)));

//escreve 'mpeg'

Na maioria dos sistemas não Windows (como as distribuições Linux), os arquivos não necessitam possuir necessariamente uma extensão formal com ponto. Neste caso o único meio de se obter o tipo do arquivo é através de seu mime-type, que será visto em um post futuro.

Até a próxima questão, abraços!