我在这个问题的最后几天真的很挣扎。而且我真的很感激一些帮助。 我现在正在博客上为我镇上的当地政治家工作。它基本上是我第一次在php中开发,所以请不要评判我。这是我的问题: 我的队友想在他的主页上发布新闻和博客。所以我在php中创建了一个小CMS来帮助他做到这一点。除了编辑部分外,它完全正常工作。 我编辑的问题是:
- 如果他想要一些格式化,我发现nl2br()方法确实很有帮助,但是当第二次编辑相同的博客条目时,它会加倍所有的< br>文本中的标签。你们有什么想法我能做到这么顺利吗?
- 下一个问题在于发布链接。如果他试图在他的博客中包含普通HTML标记的链接(< a href =" ...">< / a>),SQL总会出现错误,因为语法错误。所以我用mysqli_real_escape_string()来防止这种情况。但不是解决问题,而是在所有特殊角色面前提出一个问题。
如果有人能帮助我一点点,我真的很感激! 感谢你们。
答案 0 :(得分:0)
输出HTML时仅使用nl2br()
。当他想要编辑某些内容时,请保持原样; \n
字符将在文本框中解析(我假设您正在使用它)。
是的,你需要逃避它们(我建议你调查prepared statements以获得额外的安全感)。它们是问号,因为你可能在数据库中使用拉丁语编码,它应该是UTF-8(information on how to convert here)。
总而言之,在自己的CMS上工作是个坏主意。既然你无论如何都要去做,我真的建议你去看看你可能面临的其他安全漏洞(开始here)。
更新:而不是:
<input type="hidden" name="oldtext" value="<?php echo $_text;?>">
你应该这样做:
<textarea name="oldtext"><?php echo $_text; ?></textarea>
你甚至不需要strip_tags
。此外,您不需要utf8_encode
。