我在Phpmaker中遇到了一个问题,我不知道如何解决它。我创建了一个MySQL数据库(InnoDB)和一个PHPMaker接口,我在这里复制了IMDB网站生成的HTML代码,网址为:www.imdb.com/plugins
此代码为我提供了用户的电影评级。我粘贴到我的textarea输入字段并保存。保存在MySQL列中的数据在代码中间收到<x>
。
这是来自IMDB的原始(复制)代码:
<span class="imdbRatingPlugin" data-user="ur21152180" data-title="tt3228904" data-style="p3">
<a href="http://www.imdb.com/title/tt3228904/?ref_=plg_rt_1">
<img src="http://g-ecx.images-amazon.com/images/G/01/imdb/plugins/rating/images/imdb_37x18.png" alt=" Empire (2015) on IMDb" />
</a>
</span>
<script>
(function(d,s,id){
var js,stags=d.getElementsByTagName(s)[0];
if(d.getElementById(id)){return;}
js=d.createElement(s);
js.id=id;
js.src="http://g-ec2.images-amazon.com/images/G/01/imdb/plugins/rating/js/rating.min.js";
stags.parentNode.insertBefore(js,stags);})
(document,'script','imdb-rating-api');
</script>
这就是mysql上保存的内容:
<span class="imdbRatingPlugin" data-user="ur21152180" data-title="tt3228904" data-style="p3">
<a href="http://www.imdb.com/title/tt3228904/?ref_=plg_rt_1">
<img src="http://g-ecx.images-amazon.com/images/G/01/imdb/plugins/rating/images/imdb_37x18.png" alt=" Empire (2015) on IMDb" />
</a>
</span>
<s<x>cript>
(function(d,s,id){
var js,stags=d.getElementsByTagName(s)[0];
if(d.getElementById(id)){return;}
js=d.createElement(s);
js.id=id;
js.src="http://g-ec2.images-amazon.com/images/G/01/imdb/plugins/rating/js/rating.min.js";
stags.parentNode.insertBefore(js,stags);})
(document,'script','imdb-rating-api');
</script>
<x>
正插入<script>
标记的中间。
有人可以解释这个问题吗?
答案 0 :(得分:0)
phpmaker在'script'字样中插入< x >
。也许出于安全考虑。
我使用服务器端脚本在phpmaker10上解决了这个问题。
这是方法:
首先从左侧选择所需的字段。我把它命名为(文字)。 然后,单击名为“代码”的选项卡(服务器事件,客户端脚本....) 然后在Server Events部分下,展开Table-Specific,展开Common,然后单击Row_Rendered。用以下代码替换当前代码:
// Row Rendered event
function Row_Rendered() {
// To view properties of field class, use:
//var_dump($this-><FieldName>);
$string = $this->text->ViewValue;
$correctedText = str_replace("<x>","",$string);
$this->text->ViewValue = $correctedText;
}
还有其他方法,但这只是其中之一。
答案 1 :(得分:0)
PHPMaker将其视为安全威胁,因此您遇到了问题。您将需要使用转义字符转义它然后它将工作,但它不建议作为标准做法绕过允许将脚本代码插入您的数据库,这可能会危及数据及其安全专业。