Jump to content
Daniel Antonio de Lima

Sensurar conteudo da Pagina

Recommended Posts

Daniel Antonio de Lima

Estou desenvolvendo uma aplicação web, não sou muito experiente. Tenho uma classe chamada Page(page.class.php) que "monta" a pagina pra mim, e uma das funções dessa classe, é censurar determinado conteúdo por nível de usuário.

<?php
class Page(){
	//(...)
	static function sensurar($str){
		$tipoInt = User::tipoInt();
		for ($i=0; $i < 11; $i++) {
			if ($tipoInt == $i) continue;
			$str = Page::clearTag2($str,"<!--a$i-->","<!--$i-->","<!--a-->");
		}
		return $str;
	}
	static function clearTag2($str,$tA,$tB,$msg=""){
		$str0 = $str;
		$pattern = "/({$tA})(.|\n)*({$tB})/";
		$str = preg_replace($pattern,$msg,$str);
		if (is_null($str)) {echo "erro"; return $str0; };
		if($str == "") {
				$len = strlen($str0);
				$error = preg_last_error();
				Page::error("
                Limpou a string.
                [tA] = '$tA', [tB] = '$tB',[pattern] = '$pattern', [str].length = {$len}
                $error
                $str0
				","Page::clearTag2");
			}
		return $str;
	}

E estava funcionando maravilhosamente bem, até que começou a apresentar erro. quando utilizo na pagina pagina("string") abaixo

<pre><h2>Erro Page::clearTag2</h2>
Limpou a string.
[tA] = '<!--a5-->', [tB] = '<!--5-->',[pattern] = '/(<!--a5-->)(.|
)*(<!--5-->)/', [str].length = 6086
6
				
<!doctype html>
<html>
	<head>
		<meta charset="utf-8">
		<title>Sistema H |Produto, Odin</title>
		<link rel="stylesheet" type="text/css" href="tema.d/oficial.d/css/page.css">
		<link rel="stylesheet" type="text/css" href="tema.d/oficial.d/css/menu.css">
		<script type="text/javascript">
			server = "http://localhost/g2%20soft/ecomerce/";
		</script>
		<script src="tema.d/oficial.d/js/wrequest.js"></script>
	</head>
	<body lang="pt-br">
		<nav id="menunav">
			<header>
	<img src="tema.d/oficial.d/img/logo com fundo transparente.png" alt="">
</header>
<ul class="menu">
      <li
  class="menufechado"
  link="perfil"
  submenu="true"
  >
  <span onclick="menuOpen(this)">+ FabricaA[Fabrica]</span>
  <ul class="submenu">
      <li
  class="menufechado"
  link="edit_perfil"
  submenu="false"
  >
  <span onclick="menuOpen(this)">Perfil</span>
  
</li>
<li
  class="menufechado"
  link="edit_perfil?a=sair"
  submenu="false"
  >
  <span onclick="menuOpen(this)">Sair</span>
  
</li>

</ul>

</li>
<li
  class="menufechado"
  link="list_meusprodutos"
  submenu="true"
  >
  <span onclick="menuOpen(this)">+ Produtos</span>
  <ul class="submenu">
      <li
  class="menufechado"
  link="list_meusprodutos"
  submenu="false"
  >
  <span onclick="menuOpen(this)">Meus Produtos</span>
  
</li>
<li
  class="menufechado"
  link="add_produto"
  submenu="false"
  >
  <span onclick="menuOpen(this)">Cadastrar Produto</span>
  
</li>
<li
  class="menufechado"
  link="list_valortipo"
  submenu="false"
  >
  <span onclick="menuOpen(this)">Tabelas de Preço</span>
  
</li>

</ul>

</li>
<li
  class="menufechado"
  link="list_meusclientes"
  submenu="true"
  >
  <span onclick="menuOpen(this)">+ Clientes</span>
  <ul class="submenu">
      <li
  class="menufechado"
  link="list_meusclientes"
  submenu="false"
  >
  <span onclick="menuOpen(this)">Meus Clientes</span>
  
</li>
<li
  class="menufechado"
  link="list_naoclientes"
  submenu="false"
  >
  <span onclick="menuOpen(this)">Não Clientes</span>
  
</li>

</ul>

</li>
<li
  class="menufechado"
  link="#"
  submenu="true"
  >
  <span onclick="menuOpen(this)">+ Cadastro</span>
  <ul class="submenu">
      <li
  class="menufechado"
  link="add_produto"
  submenu="false"
  >
  <span onclick="menuOpen(this)">Produto</span>
  
</li>
<li
  class="menufechado"
  link="add_formadepagamento"
  submenu="false"
  >
  <span onclick="menuOpen(this)">Forma de pagamento</span>
  
</li>
<li
  class="menufechado"
  link="add_prasodeentrega"
  submenu="false"
  >
  <span onclick="menuOpen(this)">Praso de pagamento</span>
  
</li>

</ul>

</li>
<li
  class="menufechado"
  link="list_pedidosfabrica"
  submenu="false"
  >
  <span onclick="menuOpen(this)">Pedidos</span>
  
</li>
<li
  class="menufechado"
  link="mensagens"
  submenu="false"
  >
  <span onclick="menuOpen(this)">Mensagens</span>
  
</li>
<li
  class="menufechado"
  link=""
  submenu="true"
  >
  <span onclick="menuOpen(this)">+ Relatorios</span>
  <ul class="submenu">
      <li
  class="menufechado"
  link="rela_produtosvendidos"
  submenu="false"
  >
  <span onclick="menuOpen(this)">Produtos Vendidos</span>
  
</li>
<li
  class="menufechado"
  link="rela_produtoscadastrados"
  submenu="false"
  >
  <span onclick="menuOpen(this)">Produtos Cadastrados</span>
  
</li>
<li
  class="menufechado"
  link="rela_clientescadastrados"
  submenu="false"
  >
  <span onclick="menuOpen(this)">Clientes Cadastrados</span>
  
</li>

</ul>

</li>
<li
  class="menufechado"
  link=""
  submenu="false"
  >
  <span onclick="menuOpen(this)">Lançamentos</span>
  
</li>

</ul>

		</nav>
		<content>
			<h1>Produto, Odin</h1>
	 		<link rel="stylesheet" href="tema.d/oficial.d/css/view_produto.css">
<div class="page_listabas">
  <!--a5-->
  <div class="page_abalabel " onclick="link('list_loja')">Loja</div>
  <!--5-->
  <div class="page_abalabel page_abalabel_opened">Ver</div>
  <!--a6-->
  <div class="page_abalabel" onclick="link('edit_produto?id=52')">Detalhes</div>
  <div class="page_abalabel" onclick="link('edit_produtomidia?id=52')">Midias</div>
  <!--6-->
</div>
<div class="page_aba">
  <div id="referencia">Odin</div>
  <div class="midias">
    <div class="midia_view">
      <img src="anexo\97" alt="midia0" id="midia_view_img">
    </div>
    <div class="midias_left">
      <span> <img src="tema.d/oficial.d/img/midiasview_arrow_left.svg" alt=""> </span>
    </div>
    <div class="midias_right">
      <span> <img src="tema.d/oficial.d/img/midiasview_arrow_right.svg" alt=""> </span>
    </div>
    <div class="midia_list"><div class="">
  <img src="anexo/97" alt="" onclick="setMidia(this)">
</div>
<div class="">
  <img src="anexo/98" alt="" onclick="setMidia(this)">
</div>
</div>
  </div>
  <div class="detalhes">
    <p>Odim, tambem conhecido como pai de todos.</p>
    <p>
      2cx por <valor>R$ 0,00</valor>
    </p>
    <p>[52]Hidralica Industrial/Eletrica</p>
  </div>
  <div class="formasdepagamento">
    <p>Podendo ser pago:</p>
    {{formas de pagamento}}
  </div>
  <div class="outrosprodutos">
    <div class="produto">
      <img src="anexo/0" alt="">
    </div>
    {{outrosprodutos}}
  </div>
</div>
<script type="text/javascript" src="tema.d/oficial.d/js/view_produto.js"></script>

			<footer>G2</footer>
 		</content>
		<div class="menu-button" onclick="menuShow()">&equiv;</div>
		<div class="flutuante" id="flutuante">Loading...</div>
		<div class="msgbox_fundo" id="msgbox_fundo" onclick="MSGbox.close()">
			<div class="msgbox_box">
				<span class="button msgbox_close" onclick="MSGbox.close()">X</span>

				<div class="msgbox_conteudo" id="msgbox_conteudo">
				</div>
			</div>
		</div>
		<script type="text/javascript" src="tema.d/oficial.d/js/page.js"></script>
		<script type="text/javascript" src="tema.d/oficial.d/js/menu.js"></script>
	</body>
</html>

 

Share this post


Link to post
Share on other sites
Daniel Antonio de Lima

Estava fazendo uns testes, e percebi que o erro sempre acontecia depois de 6000 caracteres. Dividi a String e testei... bom... funcionou. Segue o código:

static function clearTag($str,$tA,$tB,$msg=""){
    $pattern = "/({$tA})(.|\n)*({$tB})/";
    $str1 = "";
    $str0 = $str;
    $str = "";
    while ($str0 != "") {
        if (strlen($str0)>6000) {
            $str1 .= substr($str0,0,6000);
            $str .= preg_replace($pattern,$msg,$str1);
            //-------
            if(preg_last_error() != 0) {
                    $len = strlen($str0);
                    $error = preg_last_error();
                    Page::error("
                    Limpou a string.
                    [tA] = '$tA', [tB] = '$tB',[pattern] = '$pattern', [str].length = {$len}
                    $error
                    $str0
                                    ","Page::clearTag2");
                }
            //-------
            $str0 = substr($str0,6000);
        }else {
             $str .= preg_replace($pattern,$msg,$str0);
             //----------
             if(preg_last_error() != 0) {
                     $len = strlen($str0);
                     $error = preg_last_error();
                     Page::error("
                     Limpou a string.
                     [tA] = '$tA', [tB] = '$tB',[pattern] = '$pattern', [str].length = {$len}
                     $error
                     $str0
                                     ","Page::clearTag2");
                 }
             //------
             $str0 = "";
        }
        //------------ Erro ----------
    }
    return $str;
}

O problema é apenas que se a "censura" estiver na altura do caractere "6000", não vai tirar o conteúdo.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.