如何在java脚本onclick标识符中安全地回显php字符串
How to echo php string safely in a java script onclick identifier
请不要将此标记为重复,因为我找不到关于非常相似问题的有效解决方案。它们似乎都无法修复我的特定字符串。
我有这个PHP变量。。。
<?php
$og_description = 'Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vivamus hendrerit cursus mi, Nullam condi''mentum posuere odio sed cursus.. Proin posue''re fermentum, ligula vel lacinia sollicitudin, libero quam ultrices quam, quis tristique orci... enim a justo!'
?>
上面的字符串与我使用的特殊字符完全相同。
然后,我试图将它回显到这个onclick标识符中。显然,<?php echo $og_description; ?>
不会单独工作。
<a href="#" onclick="fb_publish('<?php echo $fb_app_url; ?>','<?php echo $og_title; ?>','images/icon.png','<?php echo $og_description; ?>'); return false;">Post to wall</a>
我试过这些。。。
echo htmlspecialchars($og_description);
echo json_encode($og_description);
和其他一些,但似乎没有什么能将我的字符串固定为不会破坏标识符数组的格式。
有人知道我该怎么解决吗?
谢谢Josh
我不建议使用内联JavaScript,但这里有一种方法:
$anchor_fmt = '<a href="#" onclick="fb_publish.apply(window, %s);return false;">Post to wall</a>';
$js_args = array(
$fb_app_url,
$og_title,
'images/icon.png',
$og_description
);
echo sprintf($anchor_fmt,
htmlspecialchars(json_encode($js_args), ENT_QUOTES, 'UTF-8')
);
它使用json_encode()
来形成一个数组,该数组使用.apply()
传递给JavaScript函数。最后,您需要确保生成的字符串在HTML上下文中仍然有效。
顺便说一句,它可以完全写在一行中,但为了可读性,我把它分开了。
onclick="fb_publish(<?php echo htmlspecialchars(json_encode($string), ENT_COMPAT); ?>)"
您需要将其转义/编码为有效的Javascript语法,然后对其进行转义/编码,使其成为有效的HTML属性。
您可以先为js变量赋值:
<script>
var fb_app_url = <?php echo json_encode($fb_app_url); ?>;
var og_title = <?php echo json_encode($og_title); ?>;
var og_description = <?php echo json_encode($og_description); ?>;
</script>
<a href="#" onclick="fb_publish(fb_app_url,og_title,'images/icon.png',og_description); return false;">Post to wall</a>
相关文章:
- 在JavaScript中生成安全、随机、Ascii编码的字符串
- Angular-使字符串对URL安全-路由是否正确
- 使用不受信任的字符串(require.js)调用require()会引发安全问题
- 为什么将 JSON 对象存储在 cookie 中比字符串更安全或更好
- 这是在 JavaScript 中区分 0 和空字符串的最安全方法
- 获取任何 JavaScript 值或对象的字符串表示形式的安全方法
- ES2015模板字符串安全问题
- 在Javascript中构建HTML字符串真的不安全吗?
- Javascript-在包含数学运算的安全字符串上使用eval的问题
- javascript安全字符串
- nodejs中散列字符串的网络安全编码
- 使用url中的字符串可能存在安全风险
- 如何在Swift中创建一个Javascript安全字符串?
- url安全的文件名安全的字符串
- Chrome扩展'拒绝评估字符串作为JavaScript,因为'不安全的eval'
- 使用regex验证字符串是否URL安全
- JavaScript将科学记数法中的不安全整数转换为字符串
- 如何检查HTML字符串是否安全
- 使用Ember's bindatr时的安全字符串
- 用于检查字符串相等性的Javascript库,该库对于未定义的变量是安全的