我一直在使用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>
答案 0 :(得分:1)
Addslashes仅对数据库查询有用。对于浏览器输出,您需要编码:
PHP的htmlspecialchars():