数据库编辑用户给出的文本的问题

Problems with Database editing Texts given by users

最近几天我真的在为这个问题苦苦挣扎。我真的很感激一些帮助。 我目前正在为我镇上的一位当地政客写博客。这基本上是我第一次在 php 开发,所以请不要评判我。我的问题来了: 我的伙伴想在他的主页上发布新闻和博客。所以我在 php 中创建了一个小 CMS 来帮助他做到这一点。除了编辑部分外,一切都完美无缺。 我的编辑问题是:

  • If he wants some formatting I found the nl2br() method really helpful, but when editing a second time the same blog-entry it is doubling all the <br> tags in the text. Do you guys have any idea how I could do this smoother?
  • The next problem lies in publishing links. If he is trying to include links in his blogs with normal HTML tags (<a href="..."></a>) SQL always comes up with an error because of wrong syntax. So I used mysqli_real_escape_string() to prevent this. But instead of fixing the problem it just made a question marks infront of all special characters.

如果有人能帮我一点忙,我将不胜感激! 感谢你们。

  1. 输出HTML时只用nl2br()。当他想编辑某些东西时,保持原样;无论如何,\n 字符将在文本框中进行解析(我假设这就是您正在使用的)。

  2. 是的,你需要避开它们(我建议你研究 prepared statements to be extra secure). They come up as question marks because you are probably using latin encoding in your database when it should be 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.