数据库编辑问题用户提供的文本

时间:2015-01-16 18:58:53

标签: php mysql mysqli blogs

我在这个问题的最后几天真的很挣扎。而且我真的很感激一些帮助。 我现在正在博客上为我镇上的当地政治家工作。它基本上是我第一次在php中开发,所以请不要评判我。这是我的问题: 我的队友想在他的主页上发布新闻和博客。所以我在php中创建了一个小CMS来帮助他做到这一点。除了编辑部分外,它完全正常工作。 我编辑的问题是:

  
      
  • 如果他想要一些格式化,我发现nl2br()方法确实很有帮助,但是当第二次编辑相同的博客条目时,它会加倍所有的< br>文本中的标签。你们有什么想法我能做到这么顺利吗?
  •   
  • 下一个问题在于发布链接。如果他试图在他的博客中包含普通HTML标记的链接(< a href =" ...">< / a>),SQL总会出现错误,因为语法错误。所以我用mysqli_real_escape_string()来防止这种情况。但不是解决问题,而是在所有特殊角色面前提出一个问题。
  •   

如果有人能帮助我一点点,我真的很感激! 感谢你们。

1 个答案:

答案 0 :(得分:0)

  1. 输出HTML时仅使用nl2br()。当他想要编辑某些内容时,请保持原样; \n字符将在文本框中解析(我假设您正在使用它)。

  2. 是的,你需要逃避它们(我建议你调查prepared statements以获得额外的安全感)。它们是问号,因为你可能在数据库中使用拉丁语编码,它应该是UTF-8(information on how to convert here)。

  3. 总而言之,在自己的CMS上工作是个坏主意。既然你无论如何都要去做,我真的建议你去看看你可能面临的其他安全漏洞(开始here)。

    更新:而不是:

    <input type="hidden" name="oldtext" value="<?php echo $_text;?>">
    

    你应该这样做:

    <textarea name="oldtext"><?php echo $_text; ?></textarea>
    

    你甚至不需要strip_tags。此外,您不需要utf8_encode