作者 anyv
1 个管道 的构建 通过 耗费 0 秒

短信认证

@@ -10,6 +10,7 @@ namespace app\portal\controller; @@ -10,6 +10,7 @@ namespace app\portal\controller;
10 10
11 use cmf\controller\WeChatBaseController; 11 use cmf\controller\WeChatBaseController;
12 use think\Db; 12 use think\Db;
  13 +use lib\sendAPI;
13 14
14 class PersonalcenterController extends WeChatBaseController{ 15 class PersonalcenterController extends WeChatBaseController{
15 16
  1 +<?php
  2 +namespace lib;
  3 +date_default_timezone_set('PRC');//设置时区
  4 +/**
  5 + * 发送API
  6 + * demo仅供参考,demo最低运行环境PHP5.3
  7 + * 请确认开启PHP CURL 扩展
  8 + */
  9 +class sendAPI {
  10 + public $data; //发送数据
  11 + public $timeout = 30; //超时
  12 + private $apiUrl; //发送地址
  13 + private $username; //用户名
  14 + private $password; //密码
  15 +
  16 + function __construct($url, $username, $password) {
  17 + $this->apiUrl = $url;
  18 + $this->username = $username;
  19 + $this->password = $password;
  20 + }
  21 +
  22 + private function httpGet() {
  23 + $url = $this->apiUrl . '?' . http_build_query($this->data);
  24 + $curl = curl_init();
  25 + curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
  26 + curl_setopt($curl, CURLOPT_TIMEOUT, $this->timeout);
  27 + curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
  28 + curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, false);
  29 + curl_setopt($curl, CURLOPT_URL, $url);
  30 + $res = curl_exec($curl);
  31 + if (curl_errno($curl)) {
  32 + echo 'Error GET '.curl_error($curl);
  33 + }
  34 + curl_close($curl);
  35 + return $res;
  36 + }
  37 +
  38 + private function httpPost(){ // 模拟提交数据函数
  39 + $curl = curl_init(); // 启动一个CURL会话
  40 + curl_setopt($curl, CURLOPT_URL, $this->apiUrl); // 要访问的地址
  41 + curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false); // 对认证证书来源的检查
  42 + curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, false); // 从证书中检查SSL加密算法是否存在
  43 + curl_setopt($curl, CURLOPT_USERAGENT, $_SERVER['HTTP_USER_AGENT']); // 模拟用户使用的浏览器
  44 + curl_setopt($curl, CURLOPT_POST, true); // 发送一个常规的Post请求
  45 + curl_setopt($curl, CURLOPT_POSTFIELDS, http_build_query($this->data)); // Post提交的数据包
  46 + curl_setopt($curl, CURLOPT_TIMEOUT, $this->timeout); // 设置超时限制防止死循环
  47 + curl_setopt($curl, CURLOPT_HEADER, false); // 显示返回的Header区域内容
  48 + curl_setopt($curl, CURLOPT_RETURNTRANSFER, true); // 获取的信息以文件流的形式返回
  49 + $result = curl_exec($curl); // 执行操作
  50 + if (curl_errno($curl)) {
  51 + echo 'Error POST'.curl_error($curl);
  52 + }
  53 + curl_close($curl); // 关键CURL会话
  54 + return $result; // 返回数据
  55 + }
  56 +
  57 + /**
  58 + * @param $type|提交类型 POST/GET
  59 + * @param $isTranscoding|是否需要转 $isTranscoding 是否需要转utf-8 默认 false
  60 + * @return mixed
  61 + */
  62 + public function sendSMS($type, $isTranscoding = false) {
  63 + $this->data['content'] = $isTranscoding === true ? mb_convert_encoding($this->data['content'], "UTF-8") : $this->data['content'];
  64 + $this->data['username'] = $this->username;
  65 + $this->data['tkey'] = date('YmdHis');
  66 + $this->data['password'] = md5(md5($this->password) . $this->data['tkey']);
  67 + return $type == "POST" ? $this->httpPost() : $this->httpGet();
  68 + }
  69 +
  70 +}
@@ -34,6 +34,9 @@ define('RUNTIME_PATH', CMF_ROOT . 'data/runtime/'); @@ -34,6 +34,9 @@ define('RUNTIME_PATH', CMF_ROOT . 'data/runtime/');
34 // 定义CMF 版本号 34 // 定义CMF 版本号
35 define('BRONET_VERSION', '5.0.170927'); 35 define('BRONET_VERSION', '5.0.170927');
36 36
  37 +//定义短信认证
  38 +define('EXTEND_PATH', '../extend/');
  39 +
37 // 加载框架基础文件 40 // 加载框架基础文件
38 require CMF_ROOT . 'simplewind/thinkphp/base.php'; 41 require CMF_ROOT . 'simplewind/thinkphp/base.php';
39 42