Pergunta

Se eu escapar algum código, porque eu quero que ele seja exibido como o código real em html (por exemplo, para um trecho de exemplo de código), guardá-lo para o banco de dados e, em seguida, puxe-o de volta para o editor (uma página html), é exibido como html, em oposição ao texto escapou.

Meu problema surge quando eu incluir uma tag textarea no texto porque ele vai prematuramente perto da área editar e cortar o resto do que eu escrevo quando ele é salvo (ou mais, se eu não feche a tag).

Então, minha pergunta é: É este o comportamento desejado por parte do navegador? -> Então eu preciso para escapar do texto (código e pré marcas talvez)? cada vez que eu quiser fazer alterações a ela? Ou estou fazendo algo errado?

* Nota Eu sou a única pessoa a utilizar este e é na maior parte apenas para aprender, por isso não estou preocupado com o aspecto de segurança tanto como a maneira na seleção eu preciso para lidar com o meu html quando usá-lo em um navegador e ter que se comportam de uma maneira que o esperado.

Foi útil?

Solução

@Bob: htmlentities () não é o mesmo que htmlspecialchars ()

htmlentities () irá converter cada personagem que tem um código ASCII a esse código. htmlspecialchars () só vai fazer aqueles que são especiais em HTML, como &, aspas, e

Esta é completamente uma grande diferença que pode quebrar algumas coisas e também pode causar o resultado a ser enorme ao usar htmlentities ().

Outras dicas

Na minha experiência, você precisa fazer algum tipo de caractere especial escapar. No PHP a função é htmlspecialchars (). Eu tenho não sei sobre outras funções. Mas a busca apresentará os caracteres codificados na textarea corretamente.

A maioria das linguagens baseadas na web terá alguma função de biblioteca para escapar caracteres HTML-interpretados, de modo a verificar a documentação para o idioma que você está usando.

Como Darryl disse, HTML_ENTITIES () (que é um alias para htmlspecialchars ()) irá fazer o truque em PHP.

É este o comportamento desejado por parte do navegador? Sim, o navegador interpreta o seu (unescaped) HTML código como tags HTML pertencentes à página e as põe em prática.

Então eu preciso para escapar do texto (código e pré marcas talvez)? Sim, como Darryl Hein disse, use htmlspecialchars (). Eles serão exibidos corretamente pelo navegador, e você não precisa "unescape" os dados como ele volta de editar.

... estou fazendo algo errado? Você deve inspecionar qualquer entrada que chegam ao seu aplicativo ou deixá-lo e ver se existe a possibilidade de quaisquer personagens que têm um significado especial para o navegador, para o seu servidor de banco de dados, e para outras partes da sua solução. Você deve escapar os caracteres especiais adequadamente para cada interação (ou seja mysql_escape_string () para banco de dados MySQL, htmlspecialchars () para HTML, etc.)

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top