gpt4 book ai didi

php - Javascript 对象没有挖掘我的 PHP Var 的值(其中有 HTML)

转载 作者:行者123 更新时间:2023-11-28 16:38:47 24 4
gpt4 key购买 nike

我正在为客户构建一个 CMS(构建在 WordPress 之上)。我从数据库返回的一些数据存在问题。

基本上,我正在从 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 格式(

标签等),因此使用 htmlspecialchars 或 strip_tags 是不可能的。有没有什么顽固的方法可以在不杀死 Javascript 的情况下存储返回的 HTML?提前致谢。-J

最佳答案

json_encode() 字符串并去掉引号:

myObject.headline = <?php echo json_encode($varHeadline;) ?>;

当然,你可以将其重写为:

<script language = "Javascript>
var myObject = <?php echo json_encode(array('name'=>$valueName,'headline'=>$value_headline)); ?>;

function updateDiv(id)
{
var div = document.getElementById(id).innerHTML = myObject.name +
'<br>' + myObject.headline';
}
</script>

编辑:如下面的评论所述,始终确保您可以信任您放置在页面上的 HTML。如果 $valueName 或 $value_headline 来自用户输入,如果您不以其他方式验证 HTML,那么这是一个坏主意,您可能会受到 XSS 攻击等: http://en.wikipedia.org/wiki/Cross-site_scripting

关于php - Javascript 对象没有挖掘我的 PHP Var 的值(其中有 HTML),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2233640/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com