使用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下用GD生成生成缩略图的两个选择和区别
Apr 17 PHP
php 正则表达式小结
Aug 31 PHP
如何解决CI框架的Disallowed Key Characters错误提示
Jul 05 PHP
php对数组排序代码分享
Feb 24 PHP
php+ajax实现的点击浏览量加1
Apr 16 PHP
php使用Jpgraph绘制饼状图的方法
Jun 10 PHP
基于php实现七牛抓取远程图片
Dec 01 PHP
php获取ajax的headers方法与内容实例
Dec 27 PHP
自写的利用PDO对mysql数据库增删改查操作类
Feb 19 PHP
PHP实现的权重算法示例【可用于游戏根据权限来随机物品】
Feb 15 PHP
Yii2框架配置文件(Application属性)与调试技巧实例分析
May 27 PHP
Laravel框架中队列和工作(Queues、Jobs)操作实例详解
Apr 06 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 getsiteurl()函数
2009/09/05 PHP
PHP XML error parsing SOAP payload on line 1
2010/06/17 PHP
PHP 快速排序算法详解
2014/11/10 PHP
php实现cookie加密的方法
2015/03/10 PHP
PHP如何获取当前主机、域名、网址、路径、端口等参数
2017/06/09 PHP
CSS常用网站布局实例
2008/04/03 Javascript
JavaScript XML操作 封装类
2009/07/01 Javascript
JS 自定义带默认值的函数
2011/07/21 Javascript
Js制作点击输入框时默认文字消失的效果
2015/09/05 Javascript
完美实现bootstrap分页查询
2015/12/09 Javascript
javascript实现简单的on事件绑定
2016/08/23 Javascript
Angularjs中的页面访问权限怎么设置
2016/11/11 Javascript
jQuery zTree树插件动态加载实例代码
2017/05/11 jQuery
详解vue开发中调用微信jssdk的问题
2019/04/16 Javascript
webpack优化之代码分割与公共代码提取详解
2019/11/22 Javascript
Python实现子类调用父类的方法
2014/11/10 Python
提升Python程序运行效率的6个方法
2015/03/31 Python
教你用Python脚本快速为iOS10生成图标和截屏
2016/09/22 Python
利用python打印出菱形、三角形以及矩形的方法实例
2017/08/08 Python
Python PIL读取的图像发生自动旋转的实现方法
2019/07/05 Python
Python企业编码生成系统之系统主要函数设计详解
2019/07/26 Python
Python 异常处理Ⅳ过程图解
2019/10/18 Python
python3 pathlib库Path类方法总结
2019/12/26 Python
Python 解决相对路径问题:"No such file or directory"
2020/06/05 Python
纯CSS和jQuery实现的在页面顶部显示的进度条效果2例(仿手机浏览器进度条效果)
2014/04/16 HTML / CSS
AmazeUI 加载进度条的实现示例
2020/08/20 HTML / CSS
Vans英国官方网站:美国南加州的原创极限运动潮牌
2017/01/20 全球购物
写好求职信第一句话的技巧
2013/10/26 职场文书
千元咖啡店的创业计划书范文
2013/12/29 职场文书
先进个人获奖感言
2014/01/24 职场文书
绩效工资实施方案
2014/03/15 职场文书
Python制作表白爱心合集
2022/01/22 Python
一篇文章了解正则表达式的替换技巧
2022/02/24 Javascript
vue 数字翻牌器动态加载数据
2022/04/20 Vue.js
vue 把二维或多维数组转一维数组
2022/04/24 Vue.js
linux目录管理方法介绍
2022/06/01 Servers