使用YII2框架实现微信公众号中表单提交功能


Posted in PHP onSeptember 04, 2017

刚接触微信,要做一个在手机上的表单提交功能。

需求有这些:

  1. 只能在数据库中存在的手机号看到表单。
  2. 表单可以重复提交。
  3. 第一次进入表单需要验证
  4. 分享出去的页面,别人进入后也需要验证。

因为每个手机在同一个公众号当中的openid是唯一性的。所以在手机查看这个表单页面的时候,就将这个openid存到数据库中,方便下次提交可以验证。

下面是我的代码。使用的是YII2框架。

Controller

//获得回调函数
 public function actionCallback($code,$state){
    $model = new tp_tstz_proposal();
    $model1= new tp_tstz_staff();
    // 微信开放平台网站应用的appid和秘钥secret
    $appid = '';
    $secret = '';
    $curl = new curl\Curl();
    //获取access_token
    $wxresponse = $curl->get('https://api.weixin.qq.com/sns/oauth2/access_token?appid=' . $appid
      . '&secret=' . $secret . '&code=' . $code . '&grant_type=authorization_code');
    $wxresult = json_decode($wxresponse);
    if(isset($wxresult->errcode) && $wxresult->errcode > 0){
      //分享出去,重新认证
     return $this->render('login');
      // 向微信请求授权时出错,打印错误码
      // echo json_encode($wxresult);
      // exit;
    }
    $openid=$wxresult->openid;
    $result=$model1::find()->where(['openid'=>$openid])->one();
    //如果OPENID存在就去表单
    if(count($result)>0){
      $key=123456;
      return $this->render('view',['model'=>$model,'key'=>$key]);
    }else{
      return $this->render('tel',['model'=>$model1,'openid'=> $openid]);
    }
  }`

view层

很简单的重定向页面

header('Location:https://open.weixin.qq.com/connect/oauth2/authorize?appid=wx8ba95fc51672e844&redirect_uri=http%3a%2f%2fjifen.wendu.cn%2fts%2fweb%2findex.php%3fr%3dproposal%2fcallback&response_type=code&scope=snsapi_base&state=123asd#wechat_redirect');

返回的路径就是进入controller的路径。

在表单页面,我先做了一个简单的认证

if(!isset($key)){
  header('Location:http://jifen.wendu.cn/ts/web/index.php?r=say/login');
}

判断是否是从分享的页面来的,如果是从分享的页面来就要重新验证,判断是否在数据库中有此手机的openid。没有就进行手机号码的验证。

大概就是这样了,我第一个简单的微信公众号项目。

总结

以上所述是小编给大家介绍的使用YII2框架实现微信公众号中表单提交功能,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!

PHP 相关文章推荐
通过PHP CLI实现简单的数据库实时监控调度
Jul 01 PHP
php源码加密 仿微盾PHP加密专家(PHPCodeLock)
May 06 PHP
PHP正确解析UTF-8字符串技巧应用
Nov 07 PHP
深入mysql_fetch_row()与mysql_fetch_array()的区别详解
Jun 05 PHP
codeigniter集成ucenter1.6双向通信的解决办法
Jun 12 PHP
PHP生成短网址的3种方法代码实例
Jul 08 PHP
php实现读取超大文件的方法
Jul 28 PHP
PHP中error_log()函数的使用方法
Jan 20 PHP
PHP之密码加密的几种方式
Jul 29 PHP
php命令行(cli)模式下报require 加载路径错误的解决方法
Nov 23 PHP
浅谈Yii乐观锁的使用及原理
Jul 25 PHP
PHP命令行与定时任务
Apr 01 PHP
PHP实现批量重命名某个文件夹下所有文件的方法
Sep 04 #PHP
PHP读取、解析eml文件及生成网页的方法示例
Sep 04 #PHP
PHP钩子与简单分发方式实例分析
Sep 04 #PHP
PHP实现登录注册之BootStrap表单功能
Sep 03 #PHP
[原创]PHP实现生成vcf vcard文件功能类定义与使用方法详解【附demo源码下载】
Sep 02 #PHP
php简单读取.vcf格式文件的方法示例
Sep 02 #PHP
PHP实现简单的模板引擎功能示例
Sep 02 #PHP
You might like
php抓取页面的几种方法详解
2013/06/17 PHP
PHP中Memcache操作类及用法实例
2014/12/12 PHP
CodeIgniter常用知识点小结
2016/05/26 PHP
PHP 自动加载类原理与用法实例分析
2020/04/14 PHP
javascript 节点排序 2
2011/01/31 Javascript
《JavaScript高级程序设计》阅读笔记(三) ECMAScript中的引用类型
2012/02/27 Javascript
使用javascript实现页面定时跳转总结篇
2013/09/21 Javascript
结合JQ1.9通过js正则判断各种浏览器版本的方法
2013/12/30 Javascript
JS获取各种宽度、高度的简单介绍
2014/12/19 Javascript
javascript实现实时输出当前的时间
2015/04/27 Javascript
JavaScript解八皇后问题的方法总结
2016/06/12 Javascript
jQuery实现的表头固定效果实例【附完整demo源码下载】
2016/08/01 Javascript
JavaScript深拷贝和浅拷贝概念与用法实例分析
2018/06/07 Javascript
vue中实现回车键登录功能
2020/02/19 Javascript
vue scroll滚动判断的实现(是否滚动到底部、滚动方向、滚动节流、获取滚动区域dom元素)
2020/06/11 Javascript
python 基础学习第二弹 类属性和实例属性
2012/08/27 Python
Python输出汉字字库及将文字转换为图片的方法
2016/06/04 Python
Python绘制并保存指定大小图像的方法
2019/01/10 Python
如何使用Python进行OCR识别图片中的文字
2019/04/01 Python
python使用opencv在Windows下调用摄像头实现解析
2019/11/26 Python
python 深度学习中的4种激活函数
2020/09/18 Python
python和opencv构建运动检测器的实现
2021/03/03 Python
美国著名珠宝品牌之一:Jared The Galleria Of Jewelry
2016/10/01 全球购物
澳大利亚领先的在线机械五金、园艺和存储专家:Edisons
2018/03/24 全球购物
荷兰和比利时时尚鞋店:Van Dalen
2018/04/23 全球购物
中西医结合临床医学专业大学生自荐信
2013/09/28 职场文书
初中生300字旷课检讨书
2014/11/19 职场文书
2015年党员个人剖析材料
2014/12/18 职场文书
2015关于重阳节的演讲稿
2015/03/20 职场文书
幼儿园国庆节活动总结
2015/03/23 职场文书
水电施工员岗位职责
2015/04/11 职场文书
2015年乡镇人大工作总结
2015/04/22 职场文书
个人收入证明范本
2015/06/12 职场文书
志愿服务心得体会
2016/01/15 职场文书
Python turtle实现贪吃蛇游戏
2021/06/18 Python
微软Win11 全新照片应用面向 Dev预览版推出 新版本上手体验图集
2022/09/23 数码科技