Solução para charset UTF8 no PHP


Autor/fonte: Fernando Binasco
E-mail/Url: fernando.binasco[arroba]gmail.com
Tags: [ charset ] [ utf8_encode ]



Digg del.icio.us

Em foruns e listas sobre PHP eu vejo muitas pessoas com problemas de charset UTF 8, então aqui vai uma solução que eu desenvolvi.

Quando você vai instalar suas aplicações junto ao banco de dados pode acontecer de aparecer "?" no lugar do "ç", entre outros caracteres diferindo do original, eu mesmo tive este tipo de problema e no meu caso, tentei por meta tags, header e nada resolveu, só a função utf8_encode.

Com isso resolvi fazer uma função para toda vezes que precisar. Segue abaixo.

Arquivo utf8.php:

<?php
$template = $_GET['arquivo'];
$abre = fopen($template, "w");
$conteudo = utf8_encode(fread($abre, filesize($template)));
$salva = fwrite($abre, $conteudo);
fclose($abre);
?>

Como usar: Chame o utf8.php passando o nome do arquivo no navegador, por exemplo: http://www.seusite.com.br/utf8.php?arquivo=index.html.



Sobre o autor(a): Fernando Binasco
Fernando Binasco
Avatar



Enviado por fbinasco em 25/04/2008 às 15:31


Itens relacionados

Lidando com UTF-8 com o PHP e MySQL
Utilizando UTF-8 corretamente
Problemas com acentuação no PHP e MySQL

Avaliação

Avaliação desta publicação: 6.50; Total de avaliações: 2


Avaliar:


A avaliação de publicações é restrita a membros cadastrados e logados no nosso site.



Comentários

AvatarEnviado por Serenissimo em 02/05/2011 às 17:08

Pense numa gambiarra... =/

--
Valorize as amizades que você tem!!

AvatarEnviado por fbinasco em 07/05/2008 às 16:32

php340, seria o php-injection? se for não se aplica a este caso mesmo porque é um arquivo temporário.. isso que quero deixar bem claro, apenas o desenvolvedor utiliza e apaga. Não teria porque gastar tempo tratando o GET neste tipo de código.

A segurança é importante e nos sistemas devemos tentar tratar tudo que conhecemos tanto sql como php injection entre demais falhas mas ai ja é outro assunto, que não tem nada com charset.

Se tu tiver tempo disponível ou localizar aquele arquivo que falou poderia enviar um artigo sobre segurança com os exemplos para o pessoal.

t+

--
Fernando Binasco

AvatarEnviado por php340 em 07/05/2008 às 15:41

Mas o problema de segurança não digo em relação a banco de dados, e sim a má programação, pois se eu passar algum comando pela variável $_GET['arquivo'], o script abrirá normalmente, devido falta de tratamento nesta variável.

Existem diversos scripts e até uma versão "má" do firefox, que foi desenvolvida para utilização destes scripts, a partir do código fonte (que é aberto), para usufruir desta vulnerabilidade. Assim que eu encontrar estes artigos eu adiciono nos comentários, pois já fui atrás disto uma vez para descobrir o problema de invasão ao site de um cliente, desenvolvido por outra empresa na qual não se preocupou com a segurança do código.

AvatarEnviado por fbinasco em 07/05/2008 às 12:28

Sim, mas neste caso não tem problemas utilizar o $_GET mesmo porque além de não estar trabalhando com banco de dados, o arquivo sera temporário, apenas para converter o charset para utf-8, logo após isto feito pode ser removido do servidor.

Obs: se passar o script 2x no mesmo arquivo estraga a codificação.

--
Fernando Binasco

AvatarEnviado por php340 em 07/05/2008 às 11:44

Outro detalhe: cuidado com a segurança utilizando a abertura de arquivos com nomes passados via método GET.

Existem diversos scripts utilizados por hackers para invadir o servidor utilizando estas brechas e recomendo ler algum artigo sobre isto antes de implementá-lo como demonstrado neste.

AvatarEnviado por fbinasco em 07/05/2008 às 10:08

Só um detalhe, lembre-se que precisa ter permissão de escrita no arquivo. senão vai dar pau =)

--
Fernando Binasco


Envio de comentário:




  

Domingo, 23 de Novembro de 2014




Top 5 membros

Últimos membros online

Últimos membros cadastrados



Capa do livro
Microsoft Excel 2010 Passo a Passo


Capa do livro
Use a Cabeça! Web Design


Capa do livro
Use a Cabeça! Álgebra





Hostnet

IMD