使用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 相关文章推荐
2.PHP入门
Oct 09 PHP
PHP操作文件方法问答
Mar 16 PHP
PHP四大安全策略
Mar 12 PHP
php实现数组筛选奇数和偶数示例
Apr 11 PHP
PHP结合jQuery.autocomplete插件实现输入自动完成提示的功能
Apr 27 PHP
PHP5.3新特性小结
Feb 14 PHP
joomla实现注册用户添加新字段的方法
May 05 PHP
PHP模糊查询的实现方法(推荐)
Sep 06 PHP
php getcwd与dirname(__FILE__)区别详解
Sep 24 PHP
PHP面向对象五大原则之接口隔离原则(ISP)详解
Apr 04 PHP
PHP递归算法的简单实例
Feb 28 PHP
PDO实现学生管理系统
Mar 21 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中文分词 自动获取关键词介绍
2012/11/13 PHP
PHP面向对象自动加载机制原理与用法分析
2016/10/14 PHP
php json中文编码为null的解决办法
2016/12/14 PHP
php查找字符串中第一个非0的位置截取
2017/02/27 PHP
PHP+Ajax实现的无刷新分页功能详解【附demo源码下载】
2017/07/03 PHP
一个多次搜索+多次传值的解决方案
2007/01/20 Javascript
网页中实现浏览器的最大,最小化和关闭按钮
2007/03/12 Javascript
兼容ie和firefox js关闭代码
2008/12/11 Javascript
比较全的JS checkbox全选、取消全选、删除功能代码
2008/12/19 Javascript
jQuery中$.fn的用法示例介绍
2013/11/05 Javascript
jQuery中removeData()方法用法实例
2014/12/27 Javascript
JS组件Bootstrap Table表格多行拖拽效果实现代码
2015/12/08 Javascript
AngularJS之依赖注入模拟实现
2016/08/19 Javascript
AngularJS中的Promise详细介绍及实例代码
2016/12/13 Javascript
jQuery.form.js的使用详解
2017/06/14 jQuery
vue的mixins属性详解
2018/03/14 Javascript
React中获取数据的3种方法及优缺点
2020/02/18 Javascript
nodejs脚本centos开机启动实操方法
2020/03/04 NodeJs
Threejs实现滴滴官网首页地球动画功能
2020/07/13 Javascript
vue Treeselect下拉树只能选择第N级元素实现代码
2020/08/31 Javascript
vue 中使用print.js导出pdf操作
2020/11/13 Javascript
微信小程序向Java后台传输参数的方法实现
2020/12/10 Javascript
利用python程序生成word和PDF文档的方法
2017/02/14 Python
Python获取指定字符前面的所有字符方法
2018/05/02 Python
解决python线程卡死的问题
2019/02/18 Python
详解python中list的使用
2019/03/15 Python
详解Python 解压缩文件
2019/04/09 Python
75条笑死人的知乎神回复,用60行代码就爬完了
2019/05/06 Python
python交互模式下输入换行/输入多行命令的方法
2019/07/02 Python
python实现scrapy爬虫每天定时抓取数据的示例代码
2021/01/27 Python
一套Java笔试题
2016/08/20 面试题
2014年教师工作总结
2014/11/10 职场文书
幼儿园端午节活动总结
2015/05/05 职场文书
小学生大队委竞选稿
2015/11/20 职场文书
2016年度师德标兵先进事迹材料
2016/02/26 职场文书
决心书格式及范文
2019/06/24 职场文书