1

Implementei o CKeditor em meu textarea, porém ele não está salvando os dados corretamente no BD. O resultado fica assim:

Se eu escrevo Teste em negrito, o resultado do html puro seria: <p><strong>teste</strong></p>, porém o que está salvando no BD é pstrongteste/strong/p , ou seja ele está removendo os <> , alguma solução?

Função de alterar:

    public function alterar($tabela, Array $dados, $condicoes){

    foreach ($dados as $key => $value) {
       $campos[] = "{$key}='".$value."'";
    }
    $campos = implode(", ", $campos);

    $SQL = " UPDATE `{$tabela}` SET $campos WHERE $condicoes ";

    $resultado = $this->query($SQL);

    return $this->affected_rows;
}

A função que grava a alteração:

public function alterar_grv(){

    $codigo = $this->post('codigo');

    $data_denuncia = $this->post('data_denuncia');
    $hora_denuncia = $this->post('hora_denuncia');
    $tipo_denuncia = $this->post('tipo_denuncia');
    $tipo_outro = $this->post('tipo_outro');
    $denuncia = $this->post('denuncia');        
    $editado_por = $this->_cod_usuario;

    $valida = new model_valida();


    $denuncia= ("$denuncia");

    //validacoes

    $time = time();

    if($tipo_outro){

        $tipo_denuncia = $this->post('tipo_outro');

    }


        $arraydata = explode("/", $data_denuncia);
        $diamontado = $arraydata[2].'-'.$arraydata[1].'-'.$arraydata[0];
        $data_denuncia = $diamontado;


    $db = new mysql();
    $db->alterar("denuncia", array(
        "data_denuncia"=>"$data_denuncia",
        "hora_denuncia"=>"$hora_denuncia",
        "tipo_denuncia"=>"$tipo_denuncia",
        "denuncia"=>"$denuncia",
        "pdf_denuncia"=>"$denuncia",
        "editado_por"=>"$editado_por"
    ), " codigo='$codigo' ");


    $this->irpara(DOMINIO.$this->_controller.'/detalhes/codigo/'.$codigo);
}

A textarea:

<textarea name="denuncia" type="text" rows="10" cols="80" id="editor1" class="form-control"><?=$data->denuncia?></textarea>

As funções de post

 public function get($name){
        if(isset($this->_params[$name])){
            return $this->_params[$name];
        } else {
            return '';
        }
    }

    public function post($name){
        if(isset($_POST[$name])){
            $string = str_replace(array("<", ">", "\\", "//", "#"), "", $_POST[$name]);
            $string = trim($string);
            $string = strip_tags($string);
            $string = (get_magic_quotes_gpc()) ? $string : addslashes($string);
            return trim($string);
        } else {
            return '';
        }
    }
9

2 Respostas 2

1

Você está usando algumas funções que fazem exatamente isso que está ocorrendo com você da uma verificada neste fragmento!

        $string = str_replace(array("<", ">", "\\", "//", "#"), "", $_POST[$name]);
        $string = trim($string);
        $string = strip_tags($string);
        $string = (get_magic_quotes_gpc()) ? $string : addslashes($string);
1

O correto é você utilizar o método htmlentities, ele converte todos os caracteres aplicáveis em entidades HTML.

function post($html){
    return htmlentities($html, ENT_QUOTES);
}

$String = '<p>Hoje é um lindo dia!</p><p>Parece que vai chover amanhã!</p>';

echo post($String);

O exemplo acima ira retornar:

&lt;p&gt;Hoje &eacute; um lindo dia!&lt;/p&gt;&lt;p&gt;Parece que vai chover amanh&atilde;!&lt;/p&gt;

Veja funcionando no ideone.

Referência

Esta não é a resposta que você está procurando? Pesquise outras perguntas com a tag .