首页 教程 建站教程 微擎人人商城网页快照和虚拟微信用户修复

微擎人人商城网页快照和虚拟微信用户修复

自从微信公众号平台更新了用户授权的规则,微擎以前默认自动授权的方式,总是会出现网页快照,因为微擎默认的方式是打开前端默认跳转到微信授权的那个链接;正是因为没有经过用户的点击就授权,会常常出现网页快照,导致系统里总是会出现很多“微信用户”的虚拟用户,导致用户在人人商城或其他商城内出现下单付款失败的问题。

微擎人人商城网页快照和虚拟微信用户修复

现在我们只需要把微擎默认的自动授权方式,改为引导用户手动点击授权就可以了;下面是修改的方式,需要修改到微擎源码。

第一步,新建一个手动授权的模板html文件,我这里命名为publicAuth.html,文件里的代码如下(可以根据自己的需要修改):

<!DOCTYPE html> <html> <head>     <meta charset="UTF-8">     <meta name="viewport"           content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0"/>     <title>授权登录-{$_W['account']['name']}</title>     <meta name="keywords" content="{$_W['account']['name']}">     <meta name="description" content="{$_W['account']['name']}">     <style>         .container {             padding: 50px 15px;             text-align: center;         }         .logo {             width: 140px;             margin: 0 auto 42px;             text-align: center;         }         .logo img {             max-width: 100%;             vertical-align: middle;         }         .container h2 {             margin: 0;             padding: 0;             line-height: 44px;             font-size: 24px;             font-weight: 500;         }         .container p {             margin: 0;             padding: 0;             line-height: 34px;             font-size: 16px;         }         .auth-btn {             width: 98%;             display: block;             line-height: 50px;             background: #0bb20c;             color: #FFFFFF;             text-align: center;             font-size: 20px;             border-radius: 24px;             text-decoration: none;             margin-top: 44px;         }         .is-snapshoot {             display: none;             width: 100%;             height: 100%;             position: absolute;             top: 0;             left: 0;             background: url('resource/images/snapshoot_bg.png') no-repeat;             background-position: center;             background-size: 100% 100%;             z-index: 1;         }     </style> </head> <body> <div>     <div>         <img src="{$_W['account']['logo']}"              alt="{$_W['account']['name']}"></div>     <h2>您好,请先登录~</h2>     <p>授权登录后,可以更好的享受我们的服务!</p>     <div>         <a href="{$forward}">点击授权登录</a>     </div> </div> <div {if isset($_GPC['is_snapshotuser']) && $_GPC['is_snapshotuser'] == '1' }style="display:block;"{/if} > </div> </body> </html>

新建好文件后,我们把它放在目录:/app/themes/default/auth/publicAuth.html 下

第二步,修改 /app/common/bootstrap.app.inc.php这个文件,只需要在这块代码下

if ($oauth_type == 'snsapi_base') {     $forward = $oauth_account->getOauthCodeUrl($callback, $state); } else {     $forward = $oauth_account->getOauthUserInfoUrl($callback, $state); }

大概168行附近新增:

template('auth/publicAuth'); exit();

第三步,修改用户授权SESSION有效时间;把 /app/common/bootstrap.app.inc.php 文件里的

这段代码

WeSession::start($_W['uniacid'], CLIENT_IP);

替换成:

WeSession::start($_W['uniacid'], CLIENT_IP, (15 * 86400)); //15天有效期

上面的有效期根据自己的情况设置

下面是效果图

微擎人人商城网页快照和虚拟微信用户修复

第四步,用户不授权的情况,再次进入系统,也会变成虚拟用户;修改文件:/app/source/auth/oauth.ctrl.php

在文件这段代码:

$oauth = $oauth_account->getOauthInfo($code);

下面新增(大概31行左右):

//  start //判断是否是从快照来的,虚拟用户还是跳转到授权页,但是不会入库新增用户;一般是用户未授权再访问原来的链接,才会进入下面这个逻辑 if( isset($oauth['is_snapshotuser']) &&  intval($oauth['is_snapshotuser']) === 1){     $_SESSION['oauth_openid'] = '';     $backUrl = urldecode($_SESSION['dest_url']).'&is_snapshotuser=1'; //设置当前为快照模式,可以在授权页加个箭头引导右下角微信官方授权页面,这里可以自由发挥     header('Location: ' . $backUrl);     exit(); } //  end

第五步,把下面这张图片上传到 这个目录下/app/resource/images/snapshoot_bg.png

微擎人人商城网页快照和虚拟微信用户修复

当访问快照的时候,会显示下面的那个页面,不是快照没有登录则跳转到登录页面。

微擎人人商城网页快照和虚拟微信用户修复

最终,当用户访问人人商城或其他插件的时候,就会先跳转到手动授权登录页面,基本避免了用户打开我们商城就出现快照的模式。

转自:https://www.52pojie.cn/thread-1712109-1-1.html

评论(0)条

提示:请勿发布广告垃圾评论,否则封号处理!!

    猜你喜欢
    【MySQL】用户管理

    【MySQL】用户管理

     服务器/数据库  2个月前  2.12k

    我们推荐使用普通用户对数据的访问。而root作为管理员可以对普通用户对应的权限进行设置和管理。如给张三和李四这样的普通用户权限设定后。就只能操作给你权限的库了。

    Cursor Rules 让开发效率变成10倍速

    Cursor Rules 让开发效率变成10倍速

     服务器/数据库  2个月前  1.18k

    在AI与编程的交汇点上,awesome-cursorrules项目犹如一座灯塔,指引着开发者们驶向更高效、更智能的编程未来。无论你是经验丰富的老手,还是刚入行的新人,这个项目都能为你的编程之旅增添一抹亮色。这些规则文件就像是你私人定制的AI助手,能够根据你的项目需求和个人偏好,精确地调教AI的行为。突然间,你会发现AI不仅能理解Next.js的最佳实践,还能自动应用TypeScript的类型检查,甚至主动提供Tailwind CSS的类名建议。探索新的应用场景,推动AI辅助编程的边界。

    探索Django 5: 从零开始,打造你的第一个Web应用

    探索Django 5: 从零开始,打造你的第一个Web应用

     服务器/数据库  2个月前  1.1k

    Django 是一个开放源代码的 Web 应用程序框架,由 Python 写成。它遵循 MVT(Model-View-Template)的设计模式,旨在帮助开发者高效地构建复杂且功能丰富的 Web 应用程序。随着每个版本的升级,Django 不断演变,提供更多功能和改进,让开发变得更加便捷。《Django 5 Web应用开发实战》集Django架站基础、项目实践、开发经验于一体,是一本从零基础到精通Django Web企业级开发技术的实战指南《Django 5 Web应用开发实战》内容以。

    MySQL 的mysql_secure_installation安全脚本执行过程介绍

    MySQL 的mysql_secure_installation安全脚本执行过程介绍

     服务器/数据库  2个月前  1.05k

    mysql_secure_installation 是 MySQL 提供的一个安全脚本,用于提高数据库服务器的安全性

    【MySQL基础篇】概述及SQL指令:DDL及DML

    【MySQL基础篇】概述及SQL指令:DDL及DML

     服务器/数据库  2个月前  469

    数据库是长期存储在计算机内的、有组织的、可共享的、统一管理的大量数据的集合。数据库不仅仅是数据的简单堆积,而是遵循一定的规则和模式进行组织和管理的。数据库中的数据可以包括文本、数字、图像、音频等各种类型的信息。

    Redis中的哨兵(Sentinel)

    Redis中的哨兵(Sentinel)

     服务器/数据库  2个月前  304

    ​ 上篇文章我们讲述了Redis中的主从复制(Redis分布式系统中的主从复制-CSDN博客),本篇文章针对主从复制中的问题引出Redis中的哨兵,希望本篇文章会对你有所帮助。