htmlspecialchars解码php mysql

时间:2013-07-18 13:17:39

标签: php mysql

我发布了一些带有特殊字符的输入。 以下是我尝试插入db:

的一些输入示例
<input type='text' name='address' value ='P. 34/1 Ap. 4/4 Rome, "xxx" street'>
<input type='text' name='detail' value ='VAT Reg. No'>

我在db中输入了这些输入:

htmlspecialchars($_POST['address']);
htmlspecialchars($_POST['detail']);

$db->sql_query(
    "INSERT INTO company SET 
        option_type=1, 
        option_name='". htmlspecialchars($address)."', 
        option_value='". htmlspecialchars($detail)."'"
); 

我检索了记录:

<input type="text" value="htmlspecialchars_decode($rows['address'])"> 
<input type="text" value="htmlspecialchars_decode($rows['detail'])">

这是好的,直到现在,值正确插入如下:

地址:P. 34/1 Ap. 4/4 Rome, quot;xxxquot; street

详细信息:VAT Reg. No

但问题是当我从数据库中读取它们时,它什么都没显示。我尝试使用htmlspecialchars_decodehtmlentities(),但我没有正确显示所有字符。

当我使用htmlspecialchars_decode()显示值时,根本不显示detail值,地址就可以了。

拜托,有人可以帮助我吗?

2 个答案:

答案 0 :(得分:1)

您实际上不需要转换特殊字符来将字符串插入数据库。你需要使用像real_escape_string这样的东西来逃避它。

你应该只在输出上使用htmlspecialchars等。

答案 1 :(得分:0)

我希望你使用的是mysqli,而不是mysql。你应该看看prepared statements,这应该可以节省大量的麻烦,并关闭更多潜在的安全漏洞。正如euantorano所说,没有必要逃避弦乐。作为建议,将O'Reilly添加到您的测试用例中 - 当它保存得很好时,您就会接近;)

相关问题