如何阻止数据库数据破坏HTML页面?

时间:2012-05-19 18:43:41

标签: php mysql

我知道从表单中获取数据并将其放入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页面损坏,因为数据中包含引号,并且它显示在包含带引号的数据的输入标记内。

看到问题?

最佳解决方案是什么?

3 个答案:

答案 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);?>">

谢谢:)