我知道从表单中获取数据并将其放入MySQL数据库时,应使用mysql_real_escape_string()来转义数据,以防止SQL注入。我的问题有点不同。
我从MySQL数据库中提取数据然后在页面上显示,但我遇到了问题。假设我的数据如下所示:
This is some test data, and here's a quote. For good measure, here are "some more" quotes.
现在,我的php代码会是这样的:
echo '<input type="text" value="' . $data . '">';
这导致HTML页面损坏,因为数据中包含引号,并且它显示在包含带引号的数据的输入标记内。
看到问题?
最佳解决方案是什么?
答案 0 :(得分:6)
就像mysql_real_escape_string()
用于SQL操作一样,在HTML方面,它是htmlspecialchars()
。
答案 1 :(得分:2)
您需要转义html实体的数据:
echo '<input type="text" value="' . htmlentities($data) . '">';
答案 2 :(得分:1)
您可以尝试以下操作:
echo '<input type="text" value="' . stripslashes($data) . '">';
最好的,如果你可以将你的PHP代码与你的HTML分开。
<input type="text" value="<?php echo stripslashes($data);?>">
谢谢:)