Unconfigured Ad Widget

Collapse

Anúncio

Collapse
No announcement yet.

Trabalhando com buffer

Collapse
X
 
  • Filter
  • Tempo
  • Show
Clear All
new posts

  • Font Size
    #1

    Tutorial Trabalhando com buffer

    Vamos dar uma iniciação prática ao uso de funções de controle de buffer.
    Buffer seria a saída do PHP. Todo "echo" é enviado para lá. No final da execução do script, o buffer é enviado ao navegador.
    Mas você consegue limpá-lo e fazer alterações nele mesmo sem mexer nos "echos".
    Vamos, por exemplo, censurar a palavra "smoo" de duas strings. Poderíamos fazer:
    Código PHP:
    $str1 "Lorem smoo ipsum";
    $str2 "Dolor smoo sit amet";
    $str1 str_replace("smoo""{censurado}"$str1);
    $str2 str_replace("smoo""{censurado}"$str2);
    echo 
    $str1;
    echo 
    $str2
    Desta forma, trabalhamos antes do "echo". Agora, imagine-se tendo um blog onde tem muita gente escrevendo "smoo". Você não vai sair na base de dados, ou nos arquivos mais profundos do sistema, para adicionar um str_replace. Veja como faríamos:
    Código PHP:
    $str1 "Lorem smoo ipsum";
    $str2 "Dolor smoo sit amet";
    echo 
    $str1;
    echo 
    $str2;
    // ja demos o echo. o "smoo" foi enviado ao buffer...
    // entao vamos obter todo o buffer e jogar para uma variavel, e limpar (excluir tudo que tem nele)
    $buffer ob_get_clean();
    // reabra a saida
    ob_start();
    // importante: refaça os headers!
    header("Content-type: text/html; charset=UTF-8");
    // agora vamos tratar o buffer, removendo as  palavras "smoo"
    str_replace("smoo""{censurado}"$buffer);
    echo 
    $buffer
    Demos um str_replace simples, mas... E se o usuário digitar:
    smsmooo
    Repare que há duas palavras "smoo", uma dentro da outra, que está partida. Neste caso, como temos apenas um str_replace simples, o primeiro "smoo" (de dentro) vai ser removido, deixando o outro à mostra. Em outras palavras, a proteção falhou...
    smsmooo
    Filtros como esse são utilizados por programadores, para remover palavras usadas em consultas SQL (select, union...), e eles acreditam que, com isso, estarão invulneráveis.
    Mas há como melhorar esse filtro, substituindo nosso str_replace() simples por esta pequena recursão:
    Código PHP:
    while(strpos($buffer"smoo")) { // enquanto houver, no buffer, o texto "smoo"
      
    $buffer str_replace("smoo""{censurado}"$buffer);

    Quer outro exemplo, bem útil? Remover espaços excessivos, tabulações e quebras de linha, para reduzir o consumo de banda e tempo de carregamento da página.
    Código PHP:
    $buffer ob_get_clean(); // obtemos o buffer
    $remover = array(
      
    "\t",
      
    "\n",
      
    "\r\n",
      
    "  "
    );
    $buffer str_replace($removernull$buffer); // removemos tudo de uma vez
    ob_start();
    header("Content-type: text/html; charset=UTF-8");
    echo 
    $buffer// mostramos o buffer 
    Este é apenas um tutorial de iniciação, como dissemos no início. Agora que você já sabe para que serve funções como essas, pode ler a Apenas usuários registrados e ativados podem ver os links., Clique aqui para se cadastrar....
    Até mais!
    Este material pode ser compartilhado, desde que os devidos créditos sejam dados.



    Notify-list · Twitter · Blog

    Nova lei: Invadir computadores protegidos é crime.
    Lógica: Se eu invadi, não é protegido. Logo, não é crime :-)
    Similar Threads
X
Working...
X