如何安全地将javascript插入数据库并将其恢复原状?

时间:2014-01-04 06:17:38

标签: javascript database wordpress

我正在制作一个WordPress广告管理插件。需要用户将Google AdSense和其他广告代码输入数据库。

我检查了其他解决方案,例如mysql_real_escape_string()base64_encode()& base64_decode()。但他们没有做出理想的结果。

我正在使用像this这样的简单表单:

<form action="" enctype="multipart/form-data" method="post">
    <textarea name="ad_code"></textarea>
    <input type="submit">
</form>

要插入db:

<?php
        if (!empty($_POST)) {
        global $wpdb;
            $table = $wpdb->my_table = $wpdb->prefix . "my_table";
            $data = array(
                'ad_code'    => $_POST['ad_code']
            );
            $format = array(
                '%s'
            );
            $success=$wpdb->insert( $table, $data, $format );
            if($success) echo 'data saved';
        }
?>

通过上述代码,我尝试了:

$data = array(
    'ad_code'    => mysql_real_escape_string( $_POST['ad_code'] )
);

$data = array(
    'ad_code'    => base64_encode( mysql_real_escape_string( $_POST['ad_code'] ) )
);

$data = array(
    'ad_code'    => base64_encode( $_POST['ad_code'] )
);

前两次尝试完全让我失望。但是只使用base64_encode()可以很好地将文本编码为代码并插入到数据库中,但是当我在数据库查询中尝试<?php echo "<pre>" . base64_decode( $the_ad_query->ad_code ) . "</pre>"; ?>时,它没有显示任何内容。

而不是JavaScript,我尝试使用简单的字符串,例如“这是代码”,它做得很好。但我使用JavaScript代码失败了。

我的谷歌adsense代码是这样的:

<script async src="//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script>
<!-- my ad -->
<ins class="adsbygoogle"
     style="display:inline-block;width:728px;height:90px"
     data-ad-client="ca-pub-32131313131312317"
     data-ad-slot="8657754785"></ins>
<script>
(adsbygoogle = window.adsbygoogle || []).push({});
</script>

我该怎么办呢?有什么想法吗?

2 个答案:

答案 0 :(得分:0)

确定。有一个解决方案。不知道这是否正确:

插入时:

$data = array(
    'ad_code'    => base64_encode( trim( $_POST['ad_code'] ) )
);

回音:

<?php echo "<pre>" . stripslashes( base64_decode( $the_ad_query->ad_code ) ) . "</pre>"; ?>

答案 1 :(得分:0)

您可以使用相同的AdSense代码,只需换出发布商ID即可。然后你不必担心存储js ..只需存储他们的发布者ID。