使用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中一个有意思的日期逻辑处理
Mar 25 PHP
使用PHP获取当前url路径的函数以及服务器变量
Jun 29 PHP
PHP错误和异长常处理总结
Mar 06 PHP
php类的扩展和继承用法实例
Jun 20 PHP
php使用APC实现实时上传进度条功能
Oct 26 PHP
PHP登录验证码的实现与使用方法
Jul 07 PHP
详解PHP用substr函数截取字符串中的某部分
Dec 03 PHP
详解PHP数据压缩、加解密(pack, unpack)
Dec 17 PHP
php写一个函数,实现扫描并打印出自定目录下(含子目录)所有jpg文件名
May 26 PHP
Laravel访问出错提示:`Warning: require(/vendor/autoload.php): failed to open stream: No such file or di解决方法
Apr 02 PHP
PHP+iframe模拟Ajax上传文件功能示例
Jul 02 PHP
Laravel6.0.4中将添加计划任务事件的方法步骤
Oct 15 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 cron中的批处理
2008/09/16 PHP
thinkPHP2.1自定义标签库的导入方法详解
2016/07/20 PHP
thinkphp3.2实现跨控制器调用其他模块的方法
2017/03/14 PHP
统一接口:为FireFox添加IE的方法和属性的js代码
2007/03/25 Javascript
一个用javascript写的select支持上下键、首字母筛选以及回车取值的功能
2009/09/09 Javascript
学习ExtJS fit布局使用说明
2009/10/08 Javascript
javascript学习笔记(七)利用javascript来创建和存储cookie
2011/04/08 Javascript
使用js在页面中绘制表格核心代码
2013/09/16 Javascript
WEB开发之注册页面验证码倒计时代码的实现
2016/12/15 Javascript
jQuery使用siblings获取某元素所有同辈(兄弟姐妹)元素用法示例
2017/01/30 Javascript
Bootstarp 基础教程之表单部分实例代码
2017/02/03 Javascript
Java中int与integer的区别(基本数据类型与引用数据类型)
2017/02/19 Javascript
使用vue制作FullPage页面滚动效果
2017/08/21 Javascript
element-ui 关于获取select 的label值方法
2018/08/24 Javascript
vue 移动端适配方案详解
2018/11/15 Javascript
微信小程序在地图选择地址并返回经纬度简单示例
2018/12/03 Javascript
vue-loader中引入模板预处理器的实现
2019/09/04 Javascript
[52:29]DOTA2上海特级锦标赛主赛事日 - 2 胜者组第一轮#3Secret VS OG第三局
2016/03/03 DOTA
浅析python 中__name__ = '__main__' 的作用
2014/07/05 Python
Python中的startswith和endswith函数使用实例
2014/08/25 Python
python中Switch/Case实现的示例代码
2017/11/09 Python
python之Flask实现简单登录功能的示例代码
2018/12/24 Python
学习python分支结构
2019/05/17 Python
Django 全局的static和templates的使用详解
2019/07/19 Python
Django中密码的加密、验密、解密操作
2019/12/19 Python
浅谈python中频繁的print到底能浪费多长时间
2020/02/21 Python
Pycharm Plugins加载失败问题解决方案
2020/11/28 Python
Python基础进阶之海量表情包多线程爬虫功能的实现
2020/12/17 Python
最新创业融资计划书
2014/01/19 职场文书
土建工程师岗位职责
2014/06/10 职场文书
小学网上祭英烈活动总结
2014/07/05 职场文书
校园会短篇的广播稿
2014/10/21 职场文书
优秀高中学生评语
2014/12/30 职场文书
2015国庆节宣传语
2015/07/14 职场文书
HTML中的表格元素介绍
2022/02/28 HTML / CSS
Python+OpenCV实现图片中的圆形检测
2022/04/07 Python