Comment échapper à la chaîne de PHP pour javascript?
permet d'imaginer un éditeur de formulaire, il permet de modifier des valeurs disponibles. Si les données contiennent des "
de caractères (avec guillemets), il "détruit" code HTML. Je voulais dire, permet de vérifier le code: j'ai donc générer du HTML:
onclick="var a = prompt('New value: ', '<?php echo addslashes($rec[$i]); ?>'); if (a != null)....
et il en résulte
onclick="var a = prompt('New value: ', 'aaaa\"aaa'); if (a != null) { v....
et de ce fait, JS travail impossible, de sorte qu'il ruine le code. Avec un seul qoute '
il fonctionne OK. mysql real escape
fait de même.
Comment échapper à une chaîne afin qu'il ne ruine pas le javascript?
json_encode avait l'air correct, mais je dois avoir fait quelque chose de mal, il est toujours mauvais: voici une capture d'écran de Firefox voit - il insère un "mauvais" guillemet double! La valeur n'est qu'un simple numéro:
http://img402.imageshack.us/img402/5577/aaaahf.gif
et je n'ai utilisé:
('Ird be az új nevet:', <?php echo json_encode($rec['NAME']); ?>); if (a) {
source d'informationauteur user893856
Vous devez vous connecter pour publier un commentaire.
La valeur de la
onclick
attribut doit être échappé comme n'importe quel autre attribut HTML, à l'aide dehtmlspecialchars()
. Réelle Javascript, des chaînes de caractères dans le code doit être codé à l'aide dejson_encode()
. Par exemple:Cela dit... onclick (ou de tout autre événement) les attributs sont donc 2005. Faites-vous une faveur et de les séparer votre code javascript à partir de votre code html, de préférence dans un fichier externe, et de joindre les événements à l'aide des fonctions DOM (ou jQuery, qui l'enroule joliment)
Votre problème est mis en évidence en gras.
Vous ne pouvez pas citer une déclaration de variable
vous ne devriez pas besoin d'échapper les guillemets doubles une fois que c'est supprimée, puisqu'elle est à l'intérieur de guillemets simples.
Devrait ressembler à ceci -
Je suis vraiment juste de modifier la formulation de ce que @Marshall House est dit ici, mais:
En HTML, un guillemet double ( " ) toujours fin d'un attribut, indépendamment d'une barre oblique inversée de sorte qu'il voit:
onclick="var a = prompt('New value: ', 'aaaa\"
. La solution de @Marshall offre est de séparer votre code dans une fonction. De cette façon, vous pouvez imprimer échappé en PHP sans problème.E. g.: