我正在为客户建立一个CMS(建立在WordPress之上)。我从我的数据库返回的一些数据有问题。JavaScript对象不挖掘我的PHP Var的价值(其中有HTML)
基本上,我从PHP数据构建Javascript对象,以便在鼠标单击时更新我网站的某些区域。
例子(这将正常工作):
<script language = "Javascript>
var myObject = new Object();
function updateDiv(id)
{
myObject.name = '<?php echo $valueName ?>'; // $varHeadline = "Bob"
myObject.headline = '<?php echo $value_headline ?>'; // $varHeadline = "My Story"
var div = document.getElementById(id).innerHTML = myObject.name +
'<br>' + myObject.headline';
}
</script>
的问题出现了,当我的数据带回从我的数据库已经有一些HTML,或在其换行。
例子:
echo $varHeadline;
// returns <h1>This is my headline</h1>
// This is part of the value too.
所以,如果我创建了一个JavaScript对象与数据:
function updateDiv(id)
{
myObject.headline = '<?php echo $varHeadline; ?>';
var div = document.getElementById(id).innerHTML = myObject.headline;
}
我得到了我的Javascript错误。 我会喜欢继续使用Javascript对象数据填充我的div,但无法考虑一些包含HTML(或甚至单一或双引号)的数据。
我想保留我的HTML格式(<h1>标签等等),所以使用htmlspecialchars或strip_tags是不可能的。有没有死硬的方式来存储返回的HTML而不杀死Javascript? 在此先感谢。 -J
不要忘记清理$ varHeadline - 但它是网站上XSS安全漏洞的快捷方式。 – StasM 2010-02-10 00:55:00
@StasM,好点。虽然,他的具体目标是允许在页面上放置任意的HTML,所以我假定他只是引用他自己的HTML。我会补充一点。 – 2010-02-10 00:57:52
事实上,这个html来自我自己的来源。非常感谢你的回应。 – 2010-02-10 01:51:36