首先看了一下plog的程序,php写的程序,结构很精巧。面向对象的思想和MVC的思想运用得很熟练。通过admin.php,很快了解了发表文章和再编辑文件的过程。
数据库访问是通过articles.class.php进行的,把mysql的备份ftp回来,装上个mysql,select text from plog_article where id=xxx一看,数据库里的数据中,html tag是用
这样的形式保存的,页面上的<和>是用<和>这样的形式保存的。这样的话,数据库里的数据应该没有错。
那问题是不是就出在显示上了?plog中使用了一个在页面上wysiwyg的html编辑器,是不是这个编辑器中的bug?plog中的这个html编辑器是第三方的。找来一个这东西最新的版本,让bruce更新了一把,结果不成,还是有问题。
打开html编辑器给的example,看出来问题了。由于html编辑器是嵌入在页面中的,因此在html编辑器中的html tag就要写为这样的东西,这样,相当于在把数据库里的数据读出来后,放入html编辑器后,其中的<被转成了<,而原来的<没做任何 处理,这样就出了问题。这样,只要把原来的<改成<,这样&就会被转成&,而不会再和lt;一起转成<了。
问题是找出来了,可是解决它还要把源码仔细地读一读。我一开始总是认为这是html编辑器的bug,改了几次都不成,后来bruce发现,这是 textarea的问题,只要把<>这样的东西写到textarea中,就会自动被转成<,有了这个关键的发现,改起来就容易了, bruce在article.class.php中加了个方法,对<和>做了转换,把转换后的数据赋给textarea,这样就搞定乐。
恭喜偶和bruce。