微信小程序底部导航栏-tabBar

app.json 文件

    "tabBar": {
        "list": [
            {
                "pagePath": "pages/listTask/listTask",
                "text": "列表",
                "iconPath": "resources/images/listTask.png",
                "selectedIconPath": "resources/images/listTask.png"
            },
            {
                "pagePath": "pages/task/task",
                "text": "添加",
                "iconPath": "resources/images/task.png",
                "selectedIconPath": "resources/images/task.png"
            },
            {
                "pagePath": "pages/my/my",
                "text": "我的",
                "iconPath": "resources/images/my.png",
                "selectedIconPath": "resources/images/my.png"
            }
        ]
    }

相关资料

官方文档 tabBar

微信小程序之底部导航栏——tabBar

滑动验证码-产品比较

概要内容

  • 阿里云: PC、H5端可以免费(7天)使用, APP端必须付费才可以使用, 阿里云的不支持微信小程序验证. (收费版: 900¥/50万次/年, 超后另外计费)
  • 腾讯: 全部功能可以无费用使用(小程序支持集成), 但是调用次数有上线, 2000/小时, 超过后还是可以使用 但是只是前端验证 后台不会验证. (目前阶段基本可以不用使用收费版的-收费版: 1200¥/2万次/月)
  • 接入对比: 腾讯的接入集成比阿里的简单些 腾讯的提供了弹出层这样接入的时候只需要引入JS 不要考虑样式问题. 阿里的则是要自己加入或其他的方式 同时定制样式可能性高.
  • 阿里的没有带广告, 腾讯的会带有广告.

阿里云滑动验证码(数据风控)

产品地址: https://promotion.aliyun.com/ntms/act/captchaIntroAndDemo.html
H5、PC七天免费: https://help.aliyun.com/document_detail/28319.html

功能

  • 支持多种样式操作选择
  • 支持IOS、Android、H5、PC

费用

官方定价: https://help.aliyun.com/document_detail/28316.html

腾讯验证码(腾讯防水墙)

产品地址: https://007.qq.com/product.html?ADTAG=index.head

功能

  • 验证的样式操作只有一种
  • 可以支持IOS、Android、H5、PC 及 小程序

费用

官方定价: https://buy.cloud.tencent.com/price/yy
超量后说明: https://007.qq.com/help.html?ADTAG=set.feedb

相关资料

验证码哪家强?六大验证平台评测

阿里云滑动验证码集成-composer版本

可使用的composer

  • dy7338/aliyun-php-sdk-afs
  • oygza/aliyun-php-sdk-afs

oygza/aliyun-php-sdk-afs 使用

dy7338-aliyun-php-sdk-afs 使用

dy7338/aliyun-php-sdk-afs地址: https://packagist.org/packages/dy7338/aliyun-php-sdk-afs

安装: composer require dy7338/aliyun-php-sdk-afs

在控制器的方法中

$iClientProfile = \ DefaultProfile::getProfile ("cn-hangzhou", "YOUR ACCESSKEY", "YOUR ACCESS_SECRET");
$client = new \ DefaultAcsClient($iClientProfile);
\ DefaultProfile::addEndpoint ("cn-hangzhou", "cn-hangzhou", "afs", "afs.aliyuncs.com");

$request = new \ afs\Request\V20180112\AuthenticateSigRequest();
$request->setSessionId ($sessionid);// 必填参数,从前端获取,不可更改,android和ios只变更这个参数即可,下面参数不变保留xxx
$request->setToken ($token);// 必填参数,从前端获取,不可更改
$request->setSig ($sig);// 必填参数,从前端获取,不可更改
$request->setScene ($scene);// 必填参数,从前端获取,不可更改
$request->setAppKey ($appkey);//必填参数,后端填写
$request->setRemoteIp (xxxx);//必填参数,后端填写

$response = $client->doAction ($request);//返回code 100表示验签通过,900表示验签失败
var_dump($response);

方式二-使用use

use DefaultProfile;
use DefaultAcsClient;
use afs\Request\V20180112\AuthenticateSigRequest;

$iClientProfile = DefaultProfile::getProfile ("cn-hangzhou", "YOUR ACCESSKEY", "YOUR ACCESS_SECRET");
$client = new  DefaultAcsClient($iClientProfile);
DefaultProfile::addEndpoint ("cn-hangzhou", "cn-hangzhou", "afs", "afs.aliyuncs.com");

$request = new AuthenticateSigRequest();
$request->setSessionId ($sessionid);// 必填参数,从前端获取,不可更改,android和ios只变更这个参数即可,下面参数不变保留xxx
$request->setToken ($token);// 必填参数,从前端获取,不可更改
$request->setSig ($sig);// 必填参数,从前端获取,不可更改
$request->setScene ($scene);// 必填参数,从前端获取,不可更改
$request->setAppKey ($appkey);//必填参数,后端填写
$request->setRemoteIp ('xxxx');//必填参数,后端填写

$response = $client->doAction ($request);//返回code 100表示验签通过,900表示验签失败
dump($response);

相关资料

阿里云滑动验证码集成-thinkphp3.2版本
oygza-aliyun-php-sdk-afs安装出错处理

阿里云滑动验证码集成-thinkphp3.2版本

资料准备

  • 阿里云账号
  • Access Key http://i.aliyun.com/access_key

前端集成

参考官方文档: https://help.aliyun.com/document_detail/66317.html

后端集成

下载SDK后解压后重命名文件夹aliyunPhpSdkAfs复制到ThinkPHP/Library/Vendor/

<?php
namespace Home\Controller;
include_once  VENDOR_PATH . 'aliyunPhpSdkAfs/aliyun-php-sdk-core/Config.php';
use Afs\Request\V20180112 as Afs;

    public function ajaxNoCaptcha()
    {

        $iClientProfile = \ DefaultProfile::getProfile("cn-hangzhou", "YOUR ACCESSKEY", "YOUR ACCESS_SECRET");
        $client = new \ DefaultAcsClient($iClientProfile);
        \ DefaultProfile::addEndpoint("cn-hangzhou", "cn-hangzhou", "afs", "afs.aliyuncs.com");
        $request = new Afs\AuthenticateSigRequest();

        $request->setSessionId("xxxxxx");// 必填参数,有前端生成传入-对应JS中的 window.console && console.log(data.csessionid)
        $request->setToken("xxxx");// 必填参数,有前端生成传入-对应JS中的 window.console && console.log(nc_token)
        $request->setSig("xxxxx");// 必填参数,有前端生成传入 -对应JS中 window.console && console.log(data.sig)
        $request->setScene("xxxx");// 必填参数,类型, 阿里云控制获取-放在前端-再传到自己服务器中
        $request->setAppKey("xxxx");//必填参数,阿里云控制台获取
        $request->setRemoteIp("xxx");//必填参数,自己服务器获取的

        $response = $client->getAcsResponse($request);//response的code枚举:100验签通过,900验签失败
        print_r($response);

    }

相关资料

集成过程程序错误点这儿

阿里云滑动验证码集成-PHP版-问题记录

环境: mac-docker-Version 18.06.0-ce-mac70 (26399)

总结

thinkphp-3.2集成

问题出现主要是docker-代理造成的处理方法:点击docker图标 preferences – Proxies 把里面的配置 Manual proxy configuration 改成 Sysem proxy 

调试方法: PHP中用var_dump在这打印 /aliyunPhpSdkAfs/aliyun-php-sdk-core/DefaultAcsClient.php : 131 var_dump($body);

集成过程遇到到报错问题-记录

Error: HTTP Status: 400 RequestID: in /home/www-data/test_ks/ThinkPHP/Library/Vendor/aliyunPhpSdkAfs/aliyun-php-sdk-core/DefaultAcsClient.php on line 120

估计是本机环境问题-关闭 ShadowsocksX

/aliyunPhpSdkAfs/aliyun-php-sdk-core/DefaultAcsClient.php : 131 var_dump($body);

string(38) "Invalid header received from client.
"
Error: HTTP Status: 400 RequestID: in /home/www-data/test_ks/ThinkPHP/Library/Vendor/aliyunPhpSdkAfs/aliyun-php-sdk-core/DefaultAcsClient.php on line 120

启动了 ShadowsocksX, 并没有完全退出

string(277) "<html><head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>ERROR: connection refused</title>
</head><body>
The proxy could not connect ot 127.0.0.1:1087
<br>
<p>Server is <a href="https://github.com/moby/vpnkit">moby/vpnkit</a></p>
</body>
</html>
"
Error: HTTP Status: 503 RequestID: in /home/www-data/test_ks/ThinkPHP/Library/Vendor/aliyunPhpSdkAfs/aliyun-php-sdk-core/DefaultAcsClient.php on line 120

完全退出 ShadowsocksX 出现 – mac docker 中也有代理

preferences – Proxies 把里面的配置 Manual proxy configuration 改成 Sysem proxy 

代理改完后重启docker, 一切就正常了.

相关资料

打开“我的Access Key”页面

PHP-SDK使用说明
HTTP Status 400服务器返回 由于语法格式有误,服务器无法理解此请求。不作修改,客户程序就无法重复此请求

php报错 Cannot redeclare class

自己遇到的问题是: 在使用阿里云滑动验证SDK, 同时又找了一个composer包加载导致问题出现. 去除安装的composer包问题解决. 

导致问题出现的可能情况

  • 重复包含相同的类文件
  • 在同一个文件中重复声明了两次同名的类
  • 该类为PHP类库中内置的类。

相关资料

php报错:Cannot redeclare class 提示的解决方法
Fatal error: Cannot redeclare class 原因分析与解决办法