起因:昨天晚上辛辛苦苦写了一大篇关于Pagerank的东东,结果电脑突然蓝屏(6年前的本本,想下课了,NND),重启电脑后发面我的文章已经消失,只剩下短短的一句标题“成功将Pagerank查询程序迁移到linux下”,郁闷,相当地郁闷啊18

昨天在SA论坛上看到有位兄弟也是一个捣鼓能手,把Sa2.0装上后,还做了很漂亮的风格,修改了好几处BUG,于是在他博客上留言,希望能解决这个问题。与此同时,我这边也在开工了,经过我详细的分析,文章自动保存调用了include\jscript\autosave.js 这个文件,不要小瞧这几段JS,他可以自动缓存文章内容功臣,该JS获取FCK里的内容,并把文章标题,文章内容以及文章描述通过ajax提交到cp.php,接着当cp.php收到POST后,调用include\func\cache.func.php的autosave_recache函数将内容存到cache/cache_autosave.php文件里,下次进入添加文章页时,自动从cache/cache_autosave.php页获取缓存内容,从而实现发表文章时,文章内容自动保存起来了,免的因为各种原因把文章弄丢了。

经过我分析后,发现标题内容可以保存起来,文章内容和描述始终不能保存,但是我手动保存内容后,检查cache/cache_autosave.php这个文件,标题、内容和描述都保存起来了的,但是为何不能正常显示呢,难道是fck的问题,仔细对SA1.6的fck调用文件后发现一切正常,这时就出现了一个问题,同样地调用fck内容,如果是调用代码的问题,那么修改文章时就不会显示内容的,这时问题就豁然开朗了,肯定出在进入添加文章页的代码上,仔细检查发现admin\article.php有一个Sa2.0致命错误(红色部分),代码如下:
  $act = 'addarticle';
  $tdtitle = '添加日志';
  $article['description'] = $article['content'] = '';
  $article['closecomment'] = isset($_COOKIE['closecomment']) ? intval($_COOKIE['closecomment']) : '0';

为何每次添加日志的时候都要把描述和内容清空呢? 清空了那自动保存还有什么用,哈哈哈,把这行(红色部分)删除或注释掉,搞定。

最后总结一下:如何解决Sa2.0后台文章不能自动保存的BUG?
打开admin\article.php 这个文件,找到$article['description'] = $article['content'] = '';
删除该代码,或者将代码替换为 //$article['description'] = $article['content'] = '';

这样修改一下就可以实现文章自动保存了,罗嗦了这么多,我只想说明一点,出现问题时,顺藤摸瓜,多思考,不管什么问题,我们都有能力解决的,谢谢大家!!

Last modification:August 16, 2009
稀罕你