0

我正在尝试通过请求发送 HTML 代码(变量target),但在将其输入数据库之前,我通过以下方式再次对其进行编码,AJAXescape(target)

$post=target recieved on PHP page by POST
$post= htmlentities($_POST['posttext']);
$post = mysql_real_escape_string($post);

现在,在从 MySql 中读取它时,我正在使用它html_entity_decode($post)来发布所需的输出。

问题:

在我的本地 apache 服务器上一切正常,但是当我将相同的代码上传到在线服务器时,输出的几个特殊字符后跟\.

例如。

在我的本地服务器上。

awk '/<ca>/{f=1;next}/<\/ca>/{f=0}f' $filename > ca.crt
awk '/<cert>/{f=1;next}/<\/cert>/{f=0}f' $filename > client.crt
awk '/<key>/{f=1;next}/<\/key>/{f=0}f' $filename > client.key

在线服务器上。

awk \'/<ca>/{f=1;next}/<\\/ca>/{f=0}f\' $filename > ca.crt
awk \'/<cert>/{f=1;next}/<\\/cert>/{f=0}f\' $filename > client.crt
awk \'/<key>/{f=1;next}/<\\/key>/{f=0}f\' $filename > client.key

我错过了什么吗?有什么帮助吗?

4

1 回答 1

0

不要仅仅为了数据库插入而对 html 实体进行编码,特别是如果您每次都打算再次解码它们。浪费 cpu 周期,并没有采取任何措施来防止 sql 注入。

您的在线服务器可能已magic_quotes启用,这意味着它要么配置错误,要么严重过时。magic_quotes 将自动转义 PHP 的任何输入中的引号,这是愚蠢的假设,即没有人可能想向 PHP 发送一些东西然后将其放入数据库。

于 2013-07-12T19:21:05.767 回答