公众平台说明
公众号分为个人(只能申请订阅号,不可认证)和企业(服务号、订阅号,可认证),订阅号每天可发文章,在订阅列表中,服务号1个月4篇文章,在微信列表,权限、功能更强大。未认证的订阅号很多接口无法对接,比如支付,不仅要认证还要申请支付通道。
企业微信一般是针对企业内部管理的。
同一个人的小程序和公众号的appid是性质一样,都是applicationidentification,但他们两者之间的APP ID号是不同,每个公众平台账号都有一个单独的APP ID,就像身份证号码一样,具有唯一性。
微擎简介
微擎是一款小程序和公众号管理系统,可以实现微信平台(mp.weixin.qq.com )不能实现的功能,例如商城,餐饮,酒店,汽车,门店,同城,各类行业解决方案,营销,推广,吸粉,游戏,物联网和人工智能等功能。
1:系统百分百开源,方便二次开发。
2:软件和数据保存在自己的服务器上,使用的自己的域名,安全性较高。
3:微擎分为付费版和免费版,全方面覆盖企业商业运营和个人测试使用需求。
4:基于目前最流行的WEB2.0的架构(php+mysql),运行环境推荐使用linux(centOS)+ nginx + php5.3,mysql5.6。
5:微擎拥有开发者认证机制,上万开发团队基于微擎系统开发插件,用户可以直接购买这类插件,无需再次开发,降低成本。
已经安装微擎系统的用户可以在应用商城(s.we7.cc )购买自己所需要的插件,这类插件可以广泛的应用在小程序,公众号,PC网页,前台模板,微站模板等
微擎MVC
使用的是微擎系统,按照微擎语法来使用
所有模板缓存均被解析成php文件存放在./data/tpl中, 以 “模板标示符.tpl.php”形式保存。
在开发模块时模块内部应该使用 $this->template() 函数
1 2 $_GPC 全局请求变量, 获取 $GET, $POST, $_COOKIES 中的变量 $_W(大写W),是系统中最为重要的全局变量,微擎系统中很多常用的数据都存储在这个变量之中
同一个微信号appid是唯一的,对应同一个小程序中openid是唯一的。
$_w的相关数据查询
参考链接:
https://blog.csdn.net/minato_wdz/article/details/78420624
M:
位于 framework/model 目录下,每一个文件代表一个独立的功能模型,模型通常会与控制器对应。加载模型时以可使用 [load() 函数](
V:
位于 [web|app]/themes/default/ 中,模板文件与 controller, action 对应,系统提供了简单的模板引擎机制,具体请参看[模板引擎](
C:
1 控制器以文件夹、文件的形式组织,位于系统的 source 目录下,每一个目录代表一个 controller ,文件夹中的每个文件即为一个 action(参数a)。某些情况,一个action可能可能会包含多个操作,系统中提供 do参数来用于区分同一个 action 中的不同操作(细分的控制器名) 。
即控制器位于source/controller,每个controller称为一个action,一个controller包括a参数和do参数来规定它的行为
微擎目录结构:
1 2 3 4 5 6 7 8 9 10 11 12 13 addons:模块安装目录 api:外部接口文件 app:控制微信访问的部分控制器 attachment:用户上传文件目录 data:日志、缓存 errpage:错误跳转页面(404等等) framework:框架核心文件(包括function/class/modul) payment:支付代码 web:web端公共文件、控制器、资源、后台前端页面等 api.php:公众号、站点接口文件 index.php:首页指向引导文件 install.php:安装文件,建议安装后删除
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 ├─ framework │ ├─ builtin ……………………………………【微擎内建模块,很少用】 │ │ ├─ basic 文字回复模块 │ │ ├─ core 会话消息统计 │ │ ├─ cover 通用封面回复 │ │ ├─ default 默认回复模块 │ │ ├─ music 音乐回复模块 │ │ ├─ news 图文回复模块 │ │ ├─ userapi 自定义接口回复模块(此处的模块目录结构和addons区别不大) │ │ │ ├─ api 功能文件目录 │ │ │ │ ├─ baike.php 百科 │ │ │ │ ├─ calendar.php 万年历 │ │ │ │ ├─ express.php 快递 │ │ │ │ ├─ news.php 新闻 │ │ │ │ ├─ translate.php 翻译 │ │ │ │ ├─ weather.php 天气 │ │ │ │ └─ … 可模仿其他文件做扩展 │ │ └─ … . │ ├─ class ………………………………………… 工具类(可以在里面加自己定义的函类文件,比较常用) │ │ ├─ loader.class.php 文件加载器 │ │ ├─ db.class.php 数据库操作类 │ │ ├─ account.class.php 公众号业务操作基类 │ │ ├─ weixin.account.class.php 微信公众号业务操作(微信开发文档中的接口,都在此被封装为了函数 例如:数据统计、消息群发、素材上传发送等等) │ │ ├─ yixin.account.class.php 易信 │ │ └─ … . │ ├─ function …………………………………… 工具函数(可以在里面加自己定义的函数,比较常用) │ │ ├─ global.func.php 全局通用函数 │ │ ├─ cache.file.func.php 文件缓存 │ │ ├─ cache.func.php 缓存功能 │ │ ├─ cache.memcache.func.php 插件缓存 │ │ ├─ cache.mysql.func.php mysql缓存 │ │ ├─ communication.func.php http 通信(ihttp_request函数等) │ │ ├─ compat.biz.func.php 兼容函数(业务功能) │ │ ├─ compat.func.php 兼容函数(逻辑功能) │ │ ├─ file.func.php 文件操作 │ │ ├─ logging.func.php 日志记录 │ │ ├─ pdo.func.php 数据库访问操作 │ │ ├─ db.func.php 数据库信息相关操作 │ │ └─ tpl.func.php 自定义模板控件 │ ├─ library ……………………………………… 其他函数库 │ ├─ model ………………………………………… 业务功能模块(主要是微擎框架本身来调用,一般用不到) │ │ ├─ account.mod.php 公众号相关操作 │ │ ├─ activity.mod.php 营销活动 │ │ ├─ app.mod.php APP 端相关操作 │ │ ├─ cache.mod.php 缓存 │ │ ├─ cloud.mod.php 云服务 │ │ ├─ extension.mod.php 扩展功能 │ │ ├─ mc.mod.php 会员功能 │ │ ├─ module.mod.php 公众号 │ │ ├─ payment.mod.php 支付功能 │ │ ├─ reply.mod.php 规则回复 │ │ ├─ setting.mod.php 读写系统设置缓存 │ │ ├─ user.mod.php 操作用户 │ │ └─ utility.mod.php │ ├─ bootstrap.inc.php 核心文件 │ ├─ const.inc.php 全局常量定义文件 │ └─ version.inc.php 版本号 信息定义文件 bootstrap.inc.php 文件:$_W、$_GPC数组数据收集就是从这开始的 。还有个常用的:53行代码:define('DEVELOPMENT', $_W['config']['setting']['development'] == 1); 改为0,就是开发者模式。 有时出错,页面出现空白, 此处改为开发者模式的话,就会出现报错信息了。 此文件中也有常量、路径等定义。 还有一些公用的方法在web/common 文件夹内 微擎封装好的message、url、checklogin、checkaccount、buildframes等方法在common.fun.php文件内. 封装的tpl_*** 函数,比如上传图片、富文本编辑器。。。函数在tpl.func.php文件内. 微擎的框架信息文件为 frames.inc.php
参考链接:https://blog.csdn.net/qq_39702981/article/details/82788225
微擎模板中的语法:
变量输出-{$var}
等同于<?php echo $var;?>
,使用花括号包含的变量将直接输出至页面
支持直接输出数组元素或嵌套数组元素
{$row['name']} {$_W['member']['username']}
一般情况模板引擎能自动识别 javascript 中的花括号和变量输入的花括号. 如果遇到程序不能自动分辨的情况可以强制使用 “” 符号来代表 “}”
条件语法 - {if condition}{/if}
1 2 3 4 5 6 if与逻辑运算符 {if $row['flag'] =='-1'&& $row['role']!= 'admin'}被禁用{/if} 使用 {else} 来扩充条件判断, 例如: {if $row['role'] == 'admin'} 管理员 {else} 普通用户 {/if} 可以使用 {else if condition} 来进行多个条件的判断, 例如: {if $row['role'] == 'founder'} 创始人 {else if $row['role'] == 'admin'} 管理员 {else} 普通用户 {/if}
循环语法 - {loop $list $row}
1 2 3 4 使用循环语法 遍历某个集合的内容. 示例: {loop $wechats $wechat} <li>Name: {$wechat['name']}</li> {/loop} 使用扩展的语法 {$loop $list $key $wechat} 来遍历集合的键名和键值, 例如: {loop $wechats $weid $wechat} <li>Id: {$key}; Name: {$wechat['name']}</li> {/loop}
模板嵌套 - {template $name}
在模板的当前位置嵌入另一个模板, 例如: 使用 {template common/header} 来嵌入标准页头.
PHP语法嵌入 - {php statement}
使用 PHP 语法嵌入标记, 例如:
{php echo date('Y-m-d H:i:s', $row['dateline']);}
数据获取标签
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 {data module="" func="" return="" item="" limit="" assign=""}{/data} func - 指定获取数据的函数,此函数定义在模块目录下的model.php文件中 module - 指定获取数据的模块。 assign - 指定该标签得到数据后,存入的变量名称。如果为空则存在与func同名的变量中,方便在下方的代码中使用。 item - 指定循环体内的迭代时的变量名。相当于 foreach ($foo as $i => $row)中 $row变量。 limit - 指定获取变量时条数。 return - 为true时,获取到数据后直接循环输出,为false时,获取到数据后作为变量返回。默认为false 目前支持的获取数据func {data func="site*slide*search"} 获取微站幻灯片 获取出4条幻灯片数据,示例: {data module="" func="site_slide_search" return="" item="row" limit="4"} <li>Name: {$row['name']}</li> {/data} {data func="site_article" cid=$cid return="true" assign="result" iscommend="true" ishot="true"} 说明: 根据当前分类$cid获取文章列表,把数据存放在result变量中。此数组中包含list数据和pager数据,iscommend 表示推荐文章,ishot表示热门文章。此标签可同时使用,也可单个使用。示例: {data module="site" func="site_article" cid=$cid return="true" assign="result"} {loop $result['list'] $row} <li><a href="{$row['url']}">{$row['title']}</a></li> {/loop} {$result['pager']}` {data func="site_category" parentid="0"} 说明:获取当前分类列表,parentid指定获取某个分类的子类。parentid为0是则获取所有的父分类,默认是获取全部分类,示例: {data module="site" func="site_category"}{$row['name']}{loop $row['children'] $item}{$item['name']}{/loop}{/data}
参考链接:http://www.360doc.com/content/19/0726/15/65525851_851144335.shtml
微擎sql调用:
引号:
1 2 3 4 5 - 在能使用单引号的情况下,禁止使用双引号。 - 字符串为固定值,不包含换号、制表等特殊转义时,需使用单引号。 - 字符串作为数据索引时,需使用单引号。 - 字符串不需要带入变量,需使用单引号。 - 数据库SQL语句中,所有数据必须加单引号,无论数值还是字串,以避免可能的注入漏洞和SQL错误。
SQL查询:
1 2 3 4 5 - 所有数据库查询时,尽量使用封装的 pdo_getXXX 系列函数,如果无法满足再考虑书写SQL语句使用 pdo_fetchXXX 系列函数 - 所有SQL查询关键字大写,方便代码审查 - 所有SQL对象(表名,字段名,索引名等)必须用反引号包括 - 所有编码参数查询,必须使用PDO的参数绑定机制处理 - 不能绑定参数处理的查询,必须处理好变量检测及字符串转义
SQL操作
增:int | boolean
1 2 3 4 pdo_insert($tablename, $data = array(), $replace = false) //案例 $arr=['name'=>'英语' ]; $result = pdo_insert('health_moniter_category', $arr, false);
删:int | boolean
1 2 3 4 pdo_delete($tablename, $condition = array(), $glue = 'AND') //例句 $result = pdo_delete('health_moniter_category', array('id'=>3)); var_dump($result)
改:array | boolean
1 2 3 pdo_update($tablename, $data = array(), $condition, $glue = 'AND') //例句 $result = pdo_update('health_moniter_category', array('name'=>'web编程'), array('id'=>1));
查:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 查单条:array | boolean pdo_get($tablename, $condition = array(), $fields = array()); //例如 $result = pdo_get('health_moniter_course', array('id'=>1), array()); 占位符: $chat=pdo_fetch("SELECT * FROM" . tablename('longbing_card_chat') . "WHERE user_id=:user_id AND target_id=:target_id OR user_id=:target_id AND target_id=:user_id",[':user_id'=>$uid,':target_id'=>$_GPC['to_uid']]) 查多条:array | boolean pdo_getall($tablename, $condition = array(), $fields = array(), $keyfield = '',$orderby = array(), $limit = array()); //例句 $user1 = pdo_getall('users', array('status' => 1), array() , '' , 'uid DESC' , array(1,10)); fetchall: $save_count = "SELECT COUNT(id) as `count` FROM " . tablename('longbing_card_count') . " WHERE (uniacid = {$uniacid} && sign = 'copy' && `type` = 2) OR (uniacid = {$uniacid} && sign = 'copy' && `type` = 1) GROUP BY user_id"; $save_count = pdo_fetchall($save_count); 查多表: $sql="SELECT cou.*,cate.* FROM ims_health_moniter_course as cou inner JOIN ims_health_moniter_category as cate on (cou.category = cate.id)"; $result = pdo_fetchall($sql); var_dump($result); 餐饮添加营销短信菜单,对应控制器、视图和短信模板,及修正万能门店会员分页sql使用错误
参考链接:http://s.w7.cc/index.php?c=wiki&do=view&id=1&list=173