我有一些PHP代码,它存储在数据库的文本框中键入的内容。如果我输入bob's apples
,它将作为bob's apples
存储在数据库中。Mysql存储报价为'
可能是什么问题?
存储此表的表格具有latin1_swedish_ci的排序规则。
我有一些PHP代码,它存储在数据库的文本框中键入的内容。如果我输入bob's apples
,它将作为bob's apples
存储在数据库中。Mysql存储报价为'
可能是什么问题?
存储此表的表格具有latin1_swedish_ci的排序规则。
看起来像你的PHP
代码正在使用htmlentities将特殊字符转换为HTML
实体。您可以使用功能html_entity_decode取回原始字符串。
$a = "bob's apples";
echo htmlentities($a,ENT_QUOTES); // bob's apples
echo html_entity_decode(htmlentities($a,ENT_QUOTES),ENT_QUOTES); //bob's apples
实际上该功能或其他类似的功能没有被使用,但解码功能是有帮助的。你确定这不是与MySQL整理有关吗? – 2010-04-18 04:40:34
很确定。打印出插入语句并亲自查看。 – 2010-04-18 04:49:56
我们必须看到一些代码,但似乎很清楚*在输入阶段* something *是HTML转义的,正如Ollie解释的那样,完全是假的。不幸的是,这是PHP作者常见的错误。你是否正在使用某种可能会偷偷摸摸地做的框架? – bobince 2010-04-18 09:59:04
函数用htmlspecialchars()与ENT_QUOTES用于Seconde系列参数
htmlspecialchars($a, ENT_QUOTES);
你的HTML转义字符串(带有htmlspecialchars()
或htmlentities()
)插入到数据库中,前也将一单引号'
其是一个坏主意。您可以使用html_entity_decode()
来修复损坏,但最好不要放在首位。
时,你应该逃避HTML是你输出到浏览器通常与SELECT查询提取的行权前的时间:
做一个谷歌的XSS。
不就是HTML转义没有什么用“加斜线”你应该被插入串入数据库mysql_real_escape_string()
之前做的事情。这是为了避免SQL注入漏洞。
<?php $row = mysql_fetch_row($result);
echo htmlspecialchars($row['someField']); // good place to escape HTML.
<?php $str = htmlspecialchars($_GET['foo']); // bad place to escape HTML.
$str = mysql_real_escape_string($str); // good place to escape for DB.
$q = 'INSERT INTO .... VALUES (' . $str . ')';
mysql_query($q);
为什么downvotes ??????????? – 2010-04-19 14:37:24
可能是因为巨魔看到了你的昵称。 – Bene 2014-05-30 14:06:23