时间:2023-08-16 19:36:48 点击次数:10
首先是介绍一下微擎的框架,微擎是一个基于微信开发的框架,可以开发微信H5和微信小程序,但微擎微信小程序的框架已经很长时间没有更新了,用于微擎开发的h5还怪多的,在微擎商城中可以购买使用别人开发好的模块有名气的如人人商城,之前公司是使用微擎框架做H5的,项目是一些简单的单页面H5,所有了解一些微擎的使用,下面我就来详细的说说微擎的使用
这是安装模块manifest需要注意的东西
这是安装微擎的基本目录,addons中是存放模块目录,可以这么说,在addons中每一个文件就是一个模块,在微擎框架中分为app端和web端,app端就是正常访问模块的链接,web呢是访问微擎后台的链接,framework目录也是比较重要的目录,需要使用的class也是在该目录中的class目录中,
这是appons/模块 下面的正常目录,site.php和manifest.xml是必不可少的文件,site是相当于路由吧,manifest是安装模块时候的文件,如果没有manifest文件微擎是无法安装该板块的,当然没有安装该模块是访问不到该模块的 inc 可以在有site的条件下充当路由吧,比如你访问到一个模块的index方法,如果site中没有定义该方法可以到inc目录下找该方法无论在site或者inc目录下都有分前后台区别
这是site中定义方法
inc下分别前后台的是不同目录
里面php文件名称就是不同的方法,都要加.inc的尾缀
通过该url的形式访问到该模块
安装模块和访问模块就这样的可以了,下面是具体功能、
在用户没有关注公众号的情况下,不能使用$_W[fans]的数据,这是关注公众号的用户才有这数据,那么用户没有关注公众号,但又需要用户数据怎么办呢
mc_oauth_userinfo(); //进入h5 授权获取用户信息之后在获取$_W[fans]就会有用户信息,需要注意的是,进入h5先判断有没有用户信息没有在授权获取用户信息,如果是关注了的用户不需要授权也是可以获取到用户信息的,如果不做判断可能用户体验较差
路由的前台地址
$this->createWebUrl(confs); //后台地址 confs方法路由的后台地址
在视图中如需要发送ajax请求的时候url可以这么写
{php echo $this->creatrMobileUrl(index)}公共模板在那呢
微擎自带验证码 https://blog.csdn.net/sunxiaowen13/article/details/79539797(verify());
$verify -> imgcode();//验证码 checkcaptcha($code) //验证 //验证码 前端显示,PHP文件中验证只需要 checkcaptcha($code) 返回值 bool 解:用法是单独提供一个路由方法给验证码,然后在前端页面中获取该路由的方法显示验证码,后端使用checkcaptcha($code) 验证静态文件目录 相当于页面下面addons/模块名/resource/
define("S_URL", "/addons/{$_GET[m]}/resource/"); //在site中定义模板中输出变量
{$name} //输出变量循环
{loop 数组 $row} //单个数据为$row {/loop}判断
{if 条件} //true {else} //false {/if}写php代码
{php $变量=$变量+1;} //混编php <a href="{php echo $this->createMobileUrl(页面);}"></a> //实例php混编单文件上传
{php echo tpl_form_field_image(name值);} //单文件上传增删改查
注意 pdo_insert/pdo_delete/ pdo_update/pdo_get/pdo_getall方法表名不需要前面的 ims_
tablename() 这个方法是加表前缀的(需要的加不需要的不加)
pdo_insert(表名, 数据数组, $replace=false[是否替换]) //增 第三个参数 没有就添加 有就替换 pdo_delete(表名, 条件数组, $glue=AND/OR) //删 第三个参数 条件条件 与 或 pdo_update(表名 ,数据数组, 条件数组, $glue=AND/OR) //改 第三个参数 条件条件 与 或 pdo_get(表名 ,条件数组 ,字段数组); //查一条 pdo_getall(表名, 条件数组 , 字段数组,) //查多条 pdo_fetchcolumn("select count(*) from ".表名." where iswin = :iswin ",array(iswin=>1)); //查询满足条件的个数 pdo_query(sql) //执行一条非查询语句 pdo_query("DELETE FROM".tablename(表名)."WHERE 条件字段=:站位符",array(:前面的站位符=>2))数据分页
$list = pdo_fetchall(SELECT * FROM . tablename(hbyh_qrj_gift) . LIMIT . (页数 - 1) * 每页多少条 . , . 每页多少条); //分页数据 在模板中循环遍历数据 {$page} 显示现在页数链式查询
手册 ::http://s.w7.cc/index.php?c=wiki&do=view&id=1&list=452
查询用户表中的前十条男性的用户数据
实例: $query = load()->object(query); $row = $query->from(表名)->where(条件, 1)->orderby(字段, desc倒叙)->limit(10 条数)->getall();左关联的表
实例: $query = load()->object(query); $row = $query->from(users, u)->leftjoin(users_profile, b)->on(u.id, b.uid)->where(u.id, 525)->get(); //来自 users 左链接 users u.id=b.uid 条件是u.id=525 的一条记录链表查询
注意 原生的sql 操作需要加表的前缀
pdo_fetchall(SELECT * FROM . tablename($this->table_activity) . as i inner join . tablename($this->table_actclass) . as c on i.class_id = c.id WHERE i.id=:id, array(:id=> $id)); //查询来自 表i 内连接 表c on关联条件 i的class_id=c的id 条件(i的id=占位符) pdo_fetch($sql) // 根据SQL语句,查询一条记录 pdo_fetchall($sql); // 查询全部记录公共函数
TIMESTAMP 常量当前时间戳 (秒) istripslashes($var) //去除字符串或者数组中的转义符 (\) 字符串/数组 ihtmlspecialchars ($var) //转义字符串或数组中的的HTML,例如将 “php” 转化为 "PHP" 字符串/数组 isetcookie($key, $value, $expire = 0, $httponly = false) //cookie 操作 cookie名称 cookie值 过去时间 是否允许Javascript读取防止xss攻击 建议登录等信息开启此项 token() //提交表单时的来源校验码 与 checksubmit() 函数配置使用,提交表单时的来源校验码 //<input name="token" type="hidden" value="{$_W[token]}" /> 与 token() 一样 checksubmit($var = submit, $allowget = false) // 验证一下表单提交,表单中必须带有token 提交表单按钮的名称 是否验证一个get请求 random($length, $numeric = FALSE) //获取一个随机数 要获取随机数的长度 是否是纯数字随机数 checkcaptcha($code) //验证用户提交的验证码是否正确 用户填写的验证码 tablename($tablename) //微擎所有数据表均有前缀,此函数就是返回加表前缀的表名 数据表名 array_elements($keys, $src) //从一个数组中取得若干元素 需要筛选的键名列表(数组) 进行筛选的数组 range_limit($num, $downline, $upline, $returnNear = true) //判断给定参数是否位于区间内或将参数转换为区间内的数 检测的数 区间的最小值 区间的最大值 为true时小于区间则返回最小值,大于区间则返回最大值,否则返回本身的值 ijson_encode($value, $options = 0) //转换json格式 需要转化的字符串/数组 此值为 JSON_UNESCAPED_UNICODE 时,则不转义中文 iserializer($str) //序列化格式 需要序列化的字符串或数组 is_serialized($str, $strict = TRUE) //判断是否序列化 需要检测的数据 是否为严格模式 iunserializer($str) //反序列化格式 需要反序列化的字符串或数组 is_base64($str) //判断是否为base64加密的字符串 需要检测的数据 tomedia($src) //转化地址? 需要进行转换的路径 mages/noavatar_middle.gif referer($default = ) //获取引用页的地址 默认引用页地址 strexists($string, $find) //判断字符串是否包含字串 字符串 需要查找的字符串 cutstr($string, $length, $havedot = false, $charset = ) //截取字符串 字符串 截取的长度 超长字符串结尾是否加省略号 指定编码 istrlen($string, $charset = ) //忽略字符编码获取字符串的个数,中文英文皆为1个字符 字符串 指定编码 authcode($string, $operation = DECODE, $key = , $expiry = 0) //字符串加密或解密 字符串 操作DECODE或ENCODE 秘钥 过期时间 isimplexml_load_string($string, $class_name = SimpleXMLElement, $options = 0, $ns = , $is_prefix = false) //将一个 xml 字符串转化为 xml 对象 xml字符串 impleXMLElement LIBXML_NOCDATA parse_path($path) //过滤路径中可能包含的非法字符,建议通过get或是post传递的路径皆用此函数过滤 路径http 函数
http函数使用时 load()->func(communication) 引用 ihttp_request($url, $post = , $extra = array(), $timeout = 60) //模拟http请求 要获取内容的url 数据(数组) 请求附加值 超时时间 //详情看手册 ihttp_get($url) //GET 请求方法 要获取内容的URL,必须是以http或是https开头 ihttp_post($url, $data) //POST 请求方法 要获取内容的url 数据(数组) ihttp_email($to, $subject, $body, $global = false) //发送邮件 Email 收件人邮箱 邮件主题 邮件内容数组格式 是否使用系统邮箱配置信息 //具体手册操作文件函数
操作文件时候 引用 load()->func(file) file_is_image($url) //检测是否为图像文件 路径 //自我感觉 文件操作函数不是很常用 //需要的话直接看 http://s.w7.cc/index.php?c=wiki&do=view&id=1&list=249微擎有 二个全局变量 $_W $ _GPC
全局请求变量, 获取 $GET, $POST, $_COOKIES 中的变量
$_W 中 是系统中最为重要的全局变量,微擎系统中很多常用的数据都存储在这个变量之中
这边记录一些常用的 $_W 里的用法
$_W[‘timestamp’] //当前时刻的时间戳 $_W[‘clientip’] //当前客户端ip $_W[‘siteroot’] //网站的跟路径 $_W[‘isajax’] //是否是ajax请求 $_W[‘ispost’] //是否是post请求 $_W[‘ishttps’] //是否是https协议Web 端可见 $_W[‘uid’] //当前登录的操作用户 uid $_W[‘username’] //当前操作用户名称 $_W[‘user’] //当前操作用户信息App 端可见 $_W[‘member’] //当前粉丝用户信息 $_W[‘member’][‘uid’] //当前粉丝用户 uid $_W[‘openid’] //当前粉丝用户标识 $_W[‘fans’] //当前粉丝用户信息 但在使用$_W[fans]时,没有关注的用户是无法获取到$_W[fans]里的信息的文档中需要 一些复杂的数据 如 appid 什么的,
微擎封装的
$account_api=WeAccount::create(); $jssdk=$account_api->getJssdkConfig(); //这样$jssdk中就有了我们需要 链接jssdk的所有数据 include $this->tempalte(index) //模板中可以直接使用在微擎中配置 非关键字响应
触发模块
触发模块后site同级文件中,processor.php 文件,如
class Viva_csModuleProcessor extends WeModuleProcessor { //Viva_cs是模块 public function respond() { $content = $this->message; //信息数据 (数组) //$json=json_encode($content,JSON_UNESCAPED_UNICODE); return $this->respText($content[recognition]); //必须要这样响应 //这里定义此模块进行消息处理时的具体过程, 请查看微擎文档来编写你的代码 } }在这个公共模板地方创建这个文件 下面是html的内容
<script src="//res.wx.qq.com/open/js/jweixin-1.4.0.js"></script><script>jssdkconfig = {php echo json_encode($_W[account][jssdkconfig]);} || {}; jssdkconfig.debug = 0; jssdkconfig.jsApiList = [checkJsApi,onMenuShareTimeline,onMenuShareAppMessage,onMenuShareQQ,onMenuShareWeibo,hideMenuItems,showMenuItems,hideAllNonBaseMenuItem,showAllNonBaseMenuItem,translateVoice,startRecord,stopRecord,onRecordEnd,playVoice,pauseVoice,stopVoice,uploadVoice,downloadVoice,chooseImage,previewImage,uploadImage,downloadImage,getNetworkType,openLocation,getLocation,hideOptionMenu,showOptionMenu,closeWindow,scanQRCode,chooseWXPay,openProductSpecificView,addCard,chooseCard,openCard,updateAppMessageShareData,updateTimelineShareData];wx.config(jssdkconfig); wx.ready(function(){wx.hideMenuItems({menuList:[menuItem:copyUrl,menuItem:openWithQQBrowser,menuItem:openWithSafari,menuItem:share:email]});});</script>这个是视图中使用自定义分享的时候 引用这个模板后,可以使用微信sdk中的方法
下面是内容
{template "common/wxsdknew"} <script> wx.ready(function() { //封装了微信wxsdk可以调用微信方法 window.wxshare = { title: "你好e贷暖心福利来袭——安心宅家,新鲜直达!", link: "{$_W[siteurl]}", desc: 超多惊喜等你来, imgUrl: https://file.cdn.finance.vivatech.cn/191213helloe_dai/images/index/icon.jpg, success: function () {} }; wx.onMenuShareTimeline(wxshare); wx.onMenuShareAppMessage(wxshare); wx.updateAppMessageShareData(wxshare); wx.updateTimelineShareData(wxshare); });