使用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 相关文章推荐
discuz 首页四格:最新话题+最新回复+热门话题+精华文章插件
Aug 19 PHP
PHP和JAVA中的重载(overload)和覆盖(override) 介绍
Mar 01 PHP
使用pthreads实现真正的PHP多线程(需PHP5.3以上版本)
May 05 PHP
PHP编程中的常见漏洞和代码实例
Aug 06 PHP
PHP+AJAX实现投票功能的方法
Sep 28 PHP
PHP验证码生成原理和实现
Jan 24 PHP
解析 thinkphp 框架中的部分方法
May 07 PHP
php mysql PDO 查询操作的实例详解
Sep 23 PHP
PHP利用pdo_odbc实现连接数据库示例【基于ThinkPHP5.1搭建的项目】
May 13 PHP
Laravel5.4简单实现app接口Api Token认证方法
Aug 29 PHP
关于Yii中模型场景的一些简单介绍
Sep 22 PHP
YII2框架中添加自定义模块的方法实例分析
Mar 18 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检测文件编码的方法示例
2014/04/25 PHP
php与flash as3 socket通信传送文件实现代码
2014/08/16 PHP
php的socket编程详解
2016/11/20 PHP
Laravel框架实现定时发布任务的方法
2018/08/16 PHP
JS弹出层的显示与隐藏示例代码
2013/12/27 Javascript
JS中数组Array的用法示例介绍
2014/02/20 Javascript
通过Jquery.cookie.js实现展示浏览网页的历史记录超管用
2015/10/23 Javascript
JavaScript识别网页关键字并进行描红的方法
2015/11/09 Javascript
JS产生随机数的几个用法详解
2016/06/22 Javascript
form+iframe解决跨域上传文件的方法
2016/11/18 Javascript
jQuery post数据至ashx实例详解
2016/11/18 Javascript
JavaScript基本语法_动力节点Java学院整理
2017/06/26 Javascript
浅谈JavaScript中的属性:如何遍历属性
2017/09/14 Javascript
vue 简单自动补全的输入框的示例
2018/03/12 Javascript
vuejs+element UI点击编辑表格某一行时获取内容填入表单的示例
2018/10/31 Javascript
webpack 从指定入口文件中提取公共文件的方法
2018/11/13 Javascript
微信小程序顶部导航栏滑动tab效果
2019/01/28 Javascript
D3.js(v3)+react 实现带坐标与比例尺的柱形图 (V3版本)
2019/05/09 Javascript
javascript json对象小技巧之键名作为变量用法分析
2019/11/11 Javascript
javascript设计模式 ? 适配器模式原理与应用实例分析
2020/04/13 Javascript
[03:01]完美盛典趣味短片 DOTA2年度最佳&拉胯英雄
2019/12/07 DOTA
在Django中创建第一个静态视图
2015/07/15 Python
Python简单检测文本类型的2种方法【基于文件头及cchardet库】
2016/09/18 Python
python3实现基于用户的协同过滤
2018/05/31 Python
python能做什么 python的含义
2019/10/12 Python
Tensorflow全局设置可见GPU编号操作
2020/06/30 Python
解决pycharm 格式报错tabs和space不一致问题
2021/02/26 Python
纯CSS绘制漂亮的圆形图案效果
2014/05/07 HTML / CSS
CSS3实现菜单悬停效果
2020/11/17 HTML / CSS
美国羊皮公司:Overland
2018/01/15 全球购物
美国饼干礼物和美食甜点购买网站:Cheryl’s
2020/05/28 全球购物
建筑安全标语
2014/06/07 职场文书
博士生专家推荐信
2015/03/25 职场文书
刑事法律意见书
2015/06/04 职场文书
2016七夕情人节广告语
2016/01/28 职场文书
python之PySide2安装使用及QT Designer UI设计案例教程
2021/07/26 Python