PHPMaker Mysql Issue


PHPMaker Mysql Issue

我在Phpmaker有一个问题,我不知道如何解决它。我创建了一个MySQL数据库(InnoDB)和一个PHPMaker接口,在那里我复制了IMDB网站生成的HTML代码,在这个url: 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>标签的中间位置。

有谁能解释一下这个问题吗?

phpmaker在'script'字中插入< x >。可能是出于安全考虑。

我已经解决了phpmaker10使用服务器端脚本的问题。

方法如下:

首先从左侧选择您想要的字段。我把它命名为(文本)。然后,单击名为:Code (Server Events, client Scripts ....)的选项卡然后在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;           
}  

还有其他方法,但这是其中之一。

PHPMaker将其视为安全威胁,因此您遇到了这个问题。您将需要使用转义字符进行转义,然后它将工作,但不建议作为标准做法,因为绕过允许将脚本代码插入到您的数据库中,这可能会危及数据及其安全专业。