如何正确转义浏览器解析数据? addslahes()用于浏览器?

时间:2012-02-21 00:14:31

标签: php javascript html

我一直在使用addslahes()。但这会逃避数据库角色。但是,我需要在以下环境中转义HTML字符:

或者更好的想法,我打算不使用document.write(),只使用.innerHTML。如果我不写信给窗户,我是否需要逃脱?

目前我使用document.write(),如果我取出addslashes() ..那么代码会在浏览器读取下一个撇号时关闭输入字符串。

是否有与addslashes()类似的功能,但对于浏览器数据而不是数据库数据?

生成PHP(在页面内:

        <?php 
            $Object = new ObjectMaker();
            $ObjectTweet=$Object->makeTweetSmall();
            $ObjectTweet->pageInsert(); 
        ?>

名为

的功能
public function pageInsert()
{
    $resultArray=$this->DatabaseObject->_pdoQuery('multiple', 'tweet_model');
    $resultAml = MarkTweet::up($resultArray);

    $resultAml = addslashes($resultAml); // this is a hack that does not work / do it correctly 
    $embeddedAml = "<script type='text/javascript'>document.write(Arc.ViewHTweet('" . $resultAml . "'))</script>";

    Control::send($embeddedAml);
}

HTML /嵌入式Javascript输出

<script type='text/javascript'>document.write(Arc.ViewHTweet(

    '1|Test Account|1329782549|1329782546|\\\'||1|Test     
    Account|1329782549|1329782544|\\\\||1|Test 
    Account|1329782549|1329782540|hi||1|Test     
    Account|1329782549|1329781792|\\\'||1|Test 
    Account|1329782549|1329781707|hi\\\\||1|Test      
    Account|1329782549|1329781701|/||1|Test 
    Account|1329782549|1329781675|<a class=\'bookmark_tweet\' target=\'_blank\' href=\'http://bing.com\'>hi\\\\</a>'

))</script>

1 个答案:

答案 0 :(得分:1)

Addslashes仅对数据库查询有用。对于浏览器输出,您需要编码:

PHP的htmlspecialchars():

http://ca3.php.net/manual/en/function.htmlspecialchars.php