htmlspecialchars decode php mysql


htmlspecialchars decode php mysql

我发布了一些带有特殊字符的输入。以下是我试图插入数据库的一些输入示例:

<input type='text' name='address' value ='P. 34/1 Ap. 4/4 Rome, "xxx" street'>
<input type='text' name='detail' value ='VAT Reg. No'>

我在数据库中插入了如下输入:

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

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

当我使用htmlspecialchars_decode()来显示值时,只有detail值根本没有显示,地址是可以的。

有人能帮我吗?

您不需要转换特殊字符就可以将这些字符串插入数据库。不过,您需要使用real_escape_string之类的东西来转义它。

你应该只在输出上真正使用htmlspecialchars之类的。

我希望您使用的是mysqli,而不是mysql。你肯定应该看看准备好的声明,这样可以省去很多麻烦,并填补更多潜在的安全漏洞。正如尤安托拉诺所说,没有必要逃脱束缚。作为一个建议,将O’Reilly添加到您的测试用例中——当它保存良好时,您就接近了;)