自动更新水木签名档

有人想要这个自动更新签名档的插件,我就整理一下放出来吧,有兴趣就用。插件的功能是每次有新日志发表时,自动更新水木社区的签名档,显示最新的两篇帖子,删除日志时也会更新。

它是用curl通过模拟Web登录实现的,本来想改成模拟telnet的,发现更复杂,遂作罢。

想用这个插件,首先请注意以下几点:

  • web登录的窗口是有限制的,超出了会提示,这个我没有处理,所以登录过多的话更新可能不成功。不过插件本身的模拟登录会自动退出的,一般term用户不会有问题。
  • 需要服务器的PHP支持curl。即便支持了,有的服务器可能仍然不允许这种对外请求。
  • 签名档六行一个,可以设置多个,插件的代码只生成一个,并且会把你原来的所有签名档覆盖,千万注意。通过修改代码,想设置多个也可以。
  • 这种东西不是那么稳定,所以有时候更新不成功也找不到原因。可能等一段时间就更新过去了。

愿意尝试的话,从这里下载,照如下步骤设置:

  1. 把sig-update.php中的用户名和密码填上,需要的话,把生成签名档的代码(SQL,PHP)改改。我就懒得在插件中做配置页面了,估计也没多少人用,呵呵。
  2. cookie文件是必要的,且传到服务器上要可写,否则无法更新。
  3. 将sig-update目录上传到插件文件夹中,激活。如果一切正常,再发文的时候签名就会更新了。

***有兴趣的继续看***

这个东西可能不太实用,不过对curl模拟web登录可以作为粗略的参考。首先POST自己的用户名、密码给登录页,获得一个cookie,在以后的请求中把这个cookie带上就可以了。最初中文发过去是乱码,后来发现水木页面编码是gb2312,于是把中文用mb_convert_encoding函数转换了一下,问题解决。

由于WordPress中,hook到delete_post的函数在删除之前执行,因此需要在SQL查询中把它给去掉。另外在编写的过程中发现,激活的插件中的代码在所有的管理页面载入时都会执行(没注意非管理页什么效果),需要特别小心。还有插件代码是被其它文件调用的(可能是wp-admin中的吧),因此工作目录并非这个插件所在的目录,那个cookie还是用绝对路径比较好。开始的时候就是搞不清楚为什么不能更新,原来是找不到cookie。

Comments

Leave a Reply

Your email address will not be published. Required fields are marked *

Time limit is exhausted. Please reload CAPTCHA.