首页 > 教程
fastadmin微信扫码登录网页登录
- 2025-11-17
- 1830 ℃
登录页面添加微信登录按钮
{if $openid==''}//判断是否登录状态
<div class="col-xs-4">
<a href="javascript:;" class="btn btn-block btn-success btn-wechat" data-url="third/wechatlogin">
<i class="fa fa-wechat"></i> 微信登录
</a>
</div>
{/if}
//扫码登录页面
<div class="back_black">//back_black灰色半透明背景
<div>
<img src="" class="e_img">
<i class="fa fa-close gb"></i>
<p>请使用微信扫描二维码登录</p>
</div>
</div>2.点击微信登录按钮,发送ajax请求,获取临时二维码并显示在页面
$(".btn-wechat").click(function(){
let url = $(this).data('url');
Fast.api.ajax({
url:url,
data:{}
}, function(data,ret){
$(".e_img").attr('src',ret.url);
$(".back_black").show();
Controller.checkWait('1',ret.data);//定时请求登录状态
return false;
//成功的回调
}, function(){
return false;
//失败的回调
});
})
//每隔2秒请求数据,获取登录状态
checkWait(d,r){
$("input[name='start']").val(d);
var st=setInterval(
function(){
Fast.api.ajax({
url:'third/checkLogin',
data:{scene_str:r}//随机值赋值给scene_str
}, function(data,ret){
window.location.href=ret.url;
return false;
//成功的回调
}, function(){
return false;
//失败的回调
});
var start = Number($("input[name='start']").val());
if(start == 0){
clearInterval(st);
}
},
2000); //每2.5秒发送一次请求
}//php生成二维码
public function wechatlogin(){
$content=Random::uuid();//随机不重复字符串
$app = Factory::officialAccount(Config::get('wechat'));//获取微信配置
$result = $app->qrcode->temporary($content, 600);//二维码有效时间
$url = $app->qrcode->url($result['ticket']);
$dir = iconv("UTF-8", "GBK", ROOT_PATH."extend/qrcode");//创建路径
if (!file_exists($dir)) {
mkdir($dir, 0777, true);
}
$dir = ROOT_PATH."extend/qrcode/".$content.".txt";//随机字符串命名一个txt空文档
$myfile=fopen($dir,"w");
fwrite($myfile,'');
fclose($myfile);
$this->success('生成二维码', $url,$content);//返回二维码链接和随机值
}
//扫码登录的时候,获取随机字符串就是$message['EventKey']的值,再把扫码用户的openid写入这个txt文档
$myfile=fopen(ROOT_PATH."extend/qrcode/".$eventKey.".txt","w");
fwrite($myfile,$this->openid);
fclose($myfile);
//检查登录状态
public function checkLogin(){
if($this->request->post("scene_str")){//获取到随机值
$rand=$this->request->post("scene_str");
$url = $this->request->get('url', 'index/index');
if(file_exists(ROOT_PATH."extend/qrcode/".$rand.".txt")){//获取txt文档里面的openid
$info = file_get_contents( ROOT_PATH."extend/qrcode/".$rand.".txt");
if(!empty($info)){//如果有openid,表示已扫码登录,保存登录用户
$user_admin = Db::name('admin')->where('openid',$info)->find();
Session::set('admin', $user_admin);
$keeptime=86400*7;
$expiretime = time() + $keeptime;
$key = md5(md5($user_admin['id']) . md5($keeptime) . md5($expiretime) . $user_admin['token'] . config('token.key'));
$data = [$user_admin['id'], $keeptime, $expiretime, $key];
Cookie::set('keeplogin', implode('|', $data), 86400 * 7);
}
$myfile=fopen(ROOT_PATH."extend/qrcode/".$rand.".txt","w");//清空openid
fwrite($myfile,'');
fclose($myfile);
}
if ($this->auth->isLogin()) {
$this->success('登录成功', $url,'登录成功');//返回url登录成功后跳转的url
}
}
}相关内容
微信支付钱给错了怎么办?
无需视频号!不靠微信收...
微信开放平台第三方申请
离职时必须清理的电脑文...
批量提取word文档标题
怎么把桌面内容保存到非C盘?
Zend推出新开发套件 PHP...
怀疑对象出轨,学会这两...
-
Deepseek 高效使用指南,1分钟学会
2025-04-30 1166
-
推荐7款免费好用的国内外服务器传输工具
2025-03-04 1667
-
使用电脑一定要学会的20个小技巧
2024-02-19 806
-
Ant Design Vue 4.0 侧边导航栏Menu组件封装
2025-04-07 947
-
为什么你的AI助手总是答非所问?deepseek 应该怎样提问,让你轻松驾驭AI
2025-04-30 871
-
Ant Design Vue 4.0 a-modal弹窗组件封装
2025-04-07 941
-
写代码时容易用到的基础函数总结
2025-04-07 876
-
PHP中include,require,include_once,require_once的区别详解
2025-04-07 1116
-
如何给你的产品做减法
2024-05-29 1296
-
3个DeepSeek隐藏玩法,99%的人都不知道
2025-04-30 956
文章评论 (0)
- 这篇文章还没有收到评论,赶紧来抢沙发吧~


进入有缘空间
点击分享文章