使用有问题的字符序列化值(%\ n ...)

时间:2011-09-12 17:08:04

标签: php database

我有一个由公司预先开发的PHP购物车,在订购时,我添加了额外的字段以获取额外信息,它的$ _POST值只是添加到变量$ post ['attr'],但是当如果它包含%,!,$等等,那么它会被序列化并放入数据库中它会出错。它不会出错,它会发送挂单电子邮件,将它们带到paypal,让它们付费,并且永远不会验证实际上是在数据库中,如果它中有特殊的字符则不是......

我尝试了不同的方法,并认为base64编码可以提供帮助,但这意味着要抓取大量现有订单并重新执行大量系统,任何人都可以提供帮助吗?

谢谢!

1 个答案:

答案 0 :(得分:0)

您遇到的问题是数据无法转义。我猜你正在做类似的事情:

$sql = "INSERT INTO mytable (something) VALUES ('". $something ."')";
$result = mysql_query($sql);

您需要做的是首先转义变量:

$sql = "INSERT INTO mytable (something) VALUES ('". mysql_real_escape_string($something) ."')";
$result = mysql_query($sql);

我的示例使用MySQL,但所有受支持的数据库都存在类似的功能。

为数据库使用正确的函数。不要只使用url编码或通用字符串转义。需要引用的字符是特定于数据库的。