PHPMaker Mysql问题

时间:2016-10-08 19:29:19

标签: php

我在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>标记的中间。

有人可以解释这个问题吗?

2 个答案:

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