[成功解决]Sablog2.0后台发表文章不自动保存的bug

作者:傻猫 发布时间:July 2, 2008 分类:傻猫杂谈

起因:昨天晚上辛辛苦苦写了一大篇关于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'] = '';

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

标签: sablog2, bug

已有 9 条评论 »

  1. samool samool

    沙发自己坐到起....下面的同学排好队...

  2. wilson wilson

    我喜欢席地而坐!坐地板咯!
    2.0还是等你们先用的人修正Bug后,我在升级,哈哈!到时候打算从零开始!

  3. HJin HJin

    被你抢先了!我哭啊!
    昨天我也研究了好久的代码,所有过程都和你一样,也对比了1.6的程序。整个过程都弄懂了,可是……
    最后思路僵化了,就一直停留在检查js脚本上面,所以没有想到去看article.php

  4. HJin HJin

    测试成功!你好棒啊!居然没有想到是PHP的错误!……

  5. HJin HJin

    还有,这篇文章我转载走了哦!作为技术文章,自己记住。

  6. samool samool

    [quote=HJin]还有,这篇文章我转载走了哦!作为技术文章,自己记住。[/quote]哈哈哈,我也检查了好久啊,晕的很啊,本以为是代码的问题,结果是这个低级错误,呵呵..

  7. 油菜 油菜

    我现在最想说的一个字:猫猫,我太爱你了

  8. 亿次客 亿次客

    高手啊~~~

  9. 亿次客 亿次客

    高手啊,太佩服了~~

添加新评论 »

验证码: