文章来源于《傻猫网络日志》 http://www.samool.com/sablog2-autosave/
起因:
昨天晚上辛辛苦苦写了一大篇关于Pagerank的东东,结果电脑突然蓝屏(6年前的本本,想下课了,NND),重启电脑后发面我的文章已经消失,只剩下短短的一句标题“成功将Pagerank查询程序迁移到linux下”,郁闷,相当地郁闷啊
。
昨天在SA论坛上看到有位兄弟也是一个捣鼓能手,把Sa2.0装上后,还做了很漂亮的风格,修改了好几处bug,于是在他博客上留言,希望能解决这个问题。与此同时,我这边也在开工了,经过我详细的分析,文章自动保存调用了includejscriptautosave.js 这个文件,不要小瞧这几段JS,他可以自动缓存文章内容功臣,该JS获取FCK里的内容,并把文章标题,文章内容以及文章描述通过ajax提交到cp.php,接着当cp.php收到POST后,调用includefunccache.func.php的autosave_recache函数将内容存到cache/cache_autosave.php文件里,下次进入添加文章页时,自动从cache/cache_autosave.php页获取缓存内容,从而实现发表文章时,文章内容自动保存起来了,免的因为各种原因把文章弄丢了。
经过我分析后,发现标题内容可以保存起来,文章内容和描述始终不能保存,但是我手动保存内容后,检查cache/cache_autosave.php这个文件,标题、内容和描述都保存起来了的,但是为何不能正常显示呢,难道是fck的问题,仔细对SA1.6的fck调用文件后发现一切正常,这时就出现了一个问题,同样地调用fck内容,如果是调用代码的问题,那么修改文章时就不会显示内容的,这时问题就豁然开朗了,肯定出在进入添加文章页的代码上,仔细检查发现adminarticle.php有一个Sa2.0致命错误(红色部分),代码如下:
- $act = "addarticle";
- $tdtitle = "添加日志";
- $article["description"] = $article["content"] = "";
- $article["closecomment"] = isset($_COOKIE["closecomment"]) ? intval($_COOKIE["closecomment"]) : "0";
为何每次添加日志的时候都要把描述和内容清空呢? 清空了那自动保存还有什么用,哈哈哈,把这行删除或注释掉,搞定。
最后总结一下:如何解决 Sablog-x 2.0 后台文章不能自动保存的bug?
打开adminarticle.php 这个文件,找到
- $article["description"] = $article["content"] = "";
删除该代码,或者将代码替换为
- //$article["description"] = $article["content"] = "";
这样修改一下就可以实现文章自动保存了,罗嗦了这么多,我只想说明一点,出现问题时,顺藤摸瓜,多思考,不管什么问题,我们都有能力解决的,谢谢大家!!
文章来源于《傻猫网络日志》 http://www.samool.com/sablog2-autosave/
文章最后我总结一下自己查错过程。
首先是自动保存错误,第一个反应是查看autosave.js,把Sablog Plus的fckeditor和1.6的对比了之后,并没有发现在自动保存上面出现的错误。由于一根筋总认为是js错误,而且在编辑页面浏览器也的确提示js有错误,这个时候,自己就已经很糊涂了。特别是编辑文章没有问题,就更确信js没有问题了。时间已晚,然后就带着问题睡觉了。早上起来就发现问题成功被解决。