2010-08-25 164 views
1

我有一个PHP的MySQL数据库,我将存储我的所有信息。我有一个HTML页面上的文本字段,用户可以添加数据,然后提交MySQL查询插入此信息进入数据库。相当标准的东西。PHP MySQL输入HTML标签

但是,我现在处于可以将TinyMCE或FCKEditor附加到我的文本字段(现在是文本区域)的位置。我的问题是:现在如何将这些信息存入数据库,考虑到标签会影响MySQL查询,剥离任何标签会影响在另一页上显示信息?

我知道strip_tags和类似的PHP功能,但我的问题不会与PHP将与数据库输入与MySQL,任何“或”或;将打破查询并删除这些标签之前输入将删除用户所做的任何格式增强

我也假设,如果我使用mysql_real_escape_string,我需要在显示数据之前去掉斜杠 - 并且这会将所有斜杠关闭标签:

+1

'考虑到该标签会影响MySQL查询...'为什么?发生什么会导致这种情况?如果您正确地转移传入的数据(这对于安全原因至关重要),而这些不应该发生。 – 2010-08-25 09:20:34

回答

1

您需要在将值插入SQL语句之前将其转义,如果使用mysql扩展名,则使用mysql_real_escape_string做到这一点:

$text = mysql_real_escape_string($_POST['text']); 

它会把字符,如引号,这样你就可以安全地插入数据库中的值。

+0

我认为在别人面前(即当我在数据库中显示数据时),我需要去掉斜线,并且在剥去斜杠后,所有接近的标记和
也会删除它们的斜线,数据的格式。我的意思是我已经有mysql_real_escape_string用于用户输入之类的东西,但认为可能有另一种方法可用于此特定情况 – 2010-08-25 09:27:34

+0

您不需要在正确配置的Web服务器上使用反斜杠。当在PHP中使用魔术引号时,它们被使用了,但是现在它们已经被弃用了一段时间了。 'stripslashes'带反斜杠,而不是'/',所以像''这样的标签不会受到影响。 – 2010-08-25 09:30:56

+0

那么我该如何输出这些数据呢?我不想在我的输出中使用所有的转义斜杠 – 2010-08-25 10:27:26