若你是由于CDN问题而遇到的登录不成功,请检查你的CDN缓存配置,看看有没有配置php回源,因为typecho是php编写的,是动态页面,所以这个不能缓存。CDN的作用是缓存静态页面或静态资源的,而不是缓存动态资源。
本文适用于旧版mylife主题,具体办法就是使用评论功能登录而绕过主题原本的登录方式,属于借刀杀人,但并不能从根本上解决问题,写程序时亦不能持有此心态。
众所周知,MyLife主题功能虽然很多,很强大,但是也架不住成堆的bug。早在主题测试阶段中我就向作者反馈了很多bug。但是有一个bug至今没有得到解决:游客登录问题。具体就是底部导航栏的右侧登录按钮,登录之后并不成功,需要回到首页刷新才能登录成功。登出功能也有问题,即并不能登出。细心的小伙伴应该发现了,在未登录的情况下输入昵称、邮箱、链接,主题会自动登录。而这种情况下点击登出是有效的。这篇文章不讲解问题出在哪里,只用最简单的话讲解修复方式。具体的修复方式就是使用Typecho的评论功能,在用户点击登录之后往一个页面或文章发送评论,然后就可以成功登录,再拦截这个评论即可。具体操作方式请向下阅读。
首先在后台创建一个页面。比如我创建的是login路由,即https://blog.qi1.zone/login。然后回到页面列表,将此页面设为隐藏状态。
然后找到主题的resource文件夹,打开js文件夹,打开main.js文件,你会发现它是一个被压缩的js文件。将js文件格式化,即添加必要的缩进或换行以提高可读性。可以使用Webstorm等IDE的格式化功能。粘贴后找到类似于下面的几行。

这部分是在点击游客的登录按钮和退出按钮后触发的事件,将这部分函数替换成我下面给的函数。
因为修复这个bug的方式花费我很多时间,然后将我最满意的结果带给大家,还请大家在评论区回复一下,才可以复制代码,支持一下博主,不要白嫖,谢谢。
其中“var a = "https://" + document.domain + "/login/comment",”那一行,把这个login改成前面你创建的页面那个路由,或者直接把字符串改成这个页面的地址加“/comment”。
接着还需要修改一下Typecho的源码,这一步是为了阻断评论。在“var/Widget/Base/Comments.php”中,找到Comments基类中的insert方法,点进去就能看到,大概第54行,类似于“public function insert(array $rows): int”,在其中方法里面第一行添加下面一段代码:
php 代码:if($rows['cid'] == 540) return -1;
其中这个540是前方你创建页面的cid,替换成你实际页面的cid。
完成。
我来试试看~~~
你来试试~
暂无点赞
暂无点赞
来看看更新后还需要修改不
看看
暂无点赞
暂无点赞
我来试试哈
你来试试
暂无点赞
暂无点赞
感谢大佬分享
谢谢支持
暂无点赞
暂无点赞
芜湖不错,bug-1
哈哈是的,搞了好久,下午突然灵光一闪就弄好了。
暂无点赞
暂无点赞
OωO
暂无点赞
暂无点赞