鹿白运维 - 无畏者的分享平台
主页 » Typecho教程 » 正文

Typecho使用AJAX自动填写游客信息思路分享

/ in Typecho教程

灵感来源

昨天看了大佬的文章《写了一个很鸡肋的功能》,通过邮箱读取gravatar网站的api获取用户昵称,然后自动填入到评论区昵称上,觉得灵感很棒,本来想抄下的,后来一想gravatar有墙啊,那就有点难受了。

实现

于是经过几秒钟的思考,觉得直接读取历史评论里面的信息不就好了嘛,只要填过一次,下次评论时只要写下邮箱,别的信息就自动获取到了。

流程:用户填写邮箱地址,然后ajax请求api,api这里返回三个数据(头像地址,昵称,网站地址),然后将返回的信息自动填入。

重点就是api返回的三个数组的实现,头像地址比较简单,就是将邮箱用md5加密下,然后拼上地址就行了。

//差不多就是这种感觉
$avatar = 'https://secure.gravatar.com/avatar/'.md5($email).'?d=mm';


然后就是昵称和网站地址的查询了,通过邮箱使用sql查询评论列表,然后抽取最新一条的信息,从中找到昵称和网站地址就好了

//差不多就是这样
$db = Typecho_Db::get();
$info=$db->fetchRow($db->select('author','url')->from('table.comments')
->where('table.comments.mail = ?', $email)
->order('table.comments.created', Typecho_Db::SORT_DESC));

最后处理下特殊情况就行了,比如处理查询不到的情况(差不多就给空值)、处理用户已经填好昵称的情况(填过昵称的就不给他自动填写)等等。

效果

后语

这次只是分享下思路,因为我是在自己模板上直接弄的,有很多代码和教程没啥关系不方便大段大段的往文章里粘贴,所以只是分享下思路,会代码的应该都会写哈,其实很多时候需要的是灵感,而不是技术哈!这玩意不难,不过要不是看到那篇文章,估计就不会有这个东西了!

猜你喜欢
评论 (0)
隐私评论
搜索