Ir para conteúdo
Fórum Script Brasil
  • 0

htmlspecialchars para o JavaScript


Frank K Hosaka

Pergunta

Hoje precisei fazer manutenção num código bem antigo, do tempo que não sabia como usar o HTML e muito menos o JavaScript. O meu código não conseguia pegar tudo o que estava na barra de navegação com o comando $_GET. No Google, encontrei a solução nesse endereço: PHP’s htmlspecialchars Implemented in JavaScript | by Charles Stover | Medium

Como o código não funcionou comigo, fiz várias mudanças até ele funcionar. Ele ficou assim:

<script>
htmlsp.specialchars = [[ '&', 'e' ]]
function htmlsp(string) {  
	escapedString = string;
	len=htmlsp.specialchars.length;
	for (var x = 0; x < len; x++) {  
	  escapedString = escapedString.replace(
		new RegExp(htmlsp.specialchars[x][0], 'g'),
		htmlsp.specialchars[x][1]);}
	return escapedString;};
</script>

<?php if(isset($_GET['teste'])){echo "<a style=color:red>".$_GET['teste']."</a><p>";} ?>

<form>
    form sem htmlspecialchars <input name=teste value="João & Maria" onclick=submit()><p>
    form com htmlspecialchars <input name=teste value="João & Maria" onclick=value=htmlsp(value);submit()><p>
</form>
    sem form sem htmlspecialchars <input value="João & Maria" onclick=location.replace('?teste='+value)><p>
    sem form com htmlspecialchars <input value="João & Maria" onclick=location.replace('?teste='+htmlsp(value))>

 

Link para o comentário
Compartilhar em outros sites

2 respostass a esta questão

Posts Recomendados

  • 0
17 horas atrás, wash disse:

Olá!
Para enviar texto pela url existe o encode uri, veja se funciona para o caso específico:
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/encodeURI

O encodeURI não ajuda a variável $_GET pegar tudo, quando o código não usa o <form>. O <form> é o melhor meio para o $_GET pegar tudo o que tiver na barra de endereço mesmo com o caractere &. Sem o <form>, a gambiarra do htmlspecialchars para JavaScript é bacana, ou seja, tudo que gera problema, o usuário troca o problema por outra coisa que o $_GET consiga pegar.

Usei esse código para testar:

 

<?php if(isset($_GET['teste'])){echo "<a style=color:red>".$_GET['teste']."</a><p>";} ?>

<form>
    form sem encodeURI<input name=teste value="João & Maria" onclick=submit()><p>
    form com encodeURI <input name=teste value="João & Maria" onclick=encodeURI(value);submit()><p>
</form>
    sem form sem encodeURI <input value="João & Maria" onclick=location.replace('?teste='+value)><p>
    sem form com encodeURI <input value="João & Maria" onclick=location.replace('?teste='+encodeURI(value))>

 

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,1k
    • Posts
      651,8k
×
×
  • Criar Novo...