Вы не можете выбрать более 25 тем Темы должны начинаться с буквы или цифры, могут содержать дефисы(-) и должны содержать не более 35 символов.
 
 
 
 
 
 

274 строки
8.6 KiB

  1. <?php
  2. /**
  3. *
  4. * ============================================================================
  5. * * 版权所有 蜘蛛出行 * *
  6. * 网站地址: http://www.zhizhuchuxing.com
  7. * ----------------------------------------------------------------------------
  8. * 这不是一个自由软件!您只能在不用于商业目的的前提下对程序代码进行修改和
  9. * 使用;不允许对程序代码以任何形式任何目的的再发布。
  10. * ============================================================================
  11. * Author By: 温依莅
  12. * PhpStorm msg.php
  13. * Create By 2017/2/23 10:19 $
  14. */
  15. namespace common\models;
  16. class Msg
  17. {
  18. static protected $sinaAppKey = 3271760578;
  19. const MESSAGE_ACCOUNT = 'dh78301';
  20. const MESSAGE_PASSWORD = 'jGRk34B7';
  21. /**
  22. * Function Description:发送http请求
  23. * Function Name: httpRequest
  24. * @param string $url
  25. * @param array $data
  26. *
  27. * @return mixed
  28. *
  29. * @author Steven
  30. */
  31. static function httpRequest($url, $data = null)
  32. {
  33. $ch = curl_init();
  34. curl_setopt($ch, CURLOPT_URL, $url);
  35. curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
  36. curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
  37. if (!empty($data)) {
  38. curl_setopt($ch, CURLOPT_POST, 1);
  39. curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
  40. }
  41. curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
  42. $output = curl_exec($ch);
  43. curl_close($ch);
  44. return $output;
  45. }
  46. /**
  47. * Des:发送异步请求
  48. * Name: httpRequestForasyn
  49. * @param $url
  50. * @param null $data
  51. * @author 倪宗锋
  52. */
  53. static function httpRequestForasyn($url, $data = null)
  54. {
  55. $ch = curl_init();
  56. curl_setopt($ch, CURLOPT_URL, $url);
  57. curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
  58. curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
  59. if (!empty($data)) {
  60. curl_setopt($ch, CURLOPT_POST, 1);
  61. curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
  62. }
  63. curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
  64. curl_setopt($ch, CURLOPT_TIMEOUT, 1);
  65. curl_exec($ch);
  66. curl_close($ch);
  67. }
  68. static function httpRequest2($url, $post_data)
  69. {
  70. $ch = curl_init();
  71. curl_setopt($ch, CURLOPT_URL, $url);
  72. curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($post_data));
  73. curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
  74. $json_data = curl_exec($ch);
  75. return $json_data;
  76. }
  77. static function send_post_json($url, $data_string)
  78. {
  79. $ch = curl_init();
  80. curl_setopt($ch, CURLOPT_POST, 1);
  81. curl_setopt($ch, CURLOPT_URL, $url);
  82. curl_setopt($ch, CURLOPT_POSTFIELDS, $data_string);
  83. curl_setopt($ch, CURLOPT_HTTPHEADER, array(
  84. 'Content-Type: application/json; charset=utf-8',
  85. 'Content-Length: ' . strlen($data_string))
  86. );
  87. ob_start();
  88. curl_exec($ch);
  89. $return_content = ob_get_contents();
  90. ob_end_clean();
  91. $return_code = curl_getinfo($ch, CURLINFO_HTTP_CODE);
  92. return array($return_code, $return_content);
  93. }
  94. /**
  95. * 获取短信头
  96. * @param $main_corp_id
  97. * @return mixed
  98. */
  99. static function getSign($main_corp_id = 1)
  100. {
  101. $signArr = \Yii::$app->params['msg_web_name'];
  102. if (isset($signArr[$main_corp_id])) {
  103. return $signArr[$main_corp_id];
  104. } else {
  105. return $signArr[1];
  106. }
  107. }
  108. static function sendTelMsg($phones, $content, $main_corp_id = 1){
  109. $send_data = array();
  110. $send_data["account"] = self::MESSAGE_ACCOUNT;
  111. $send_data["password"] = strtolower(md5(self::MESSAGE_PASSWORD));
  112. $send_data["sign"] = static::getSign($main_corp_id);
  113. $send_data["phones"] = $phones;
  114. $send_data["content"] = $content;
  115. $url = 'http://www.dh3t.com/json/sms/Submit';
  116. $response = self::send_post_json($url, urldecode(json_encode($send_data)));
  117. $error_code = $response[0] == 200 ? 0 : -1;
  118. return $error_code;
  119. }
  120. /**
  121. * Function Description:获取短信
  122. * Function Name: actionGetTailorMessage
  123. * @param $main_corp_id int
  124. *
  125. * @return mixed|string
  126. *
  127. * @author LUOCJ
  128. */
  129. static function getMessage($main_corp_id = 1)
  130. {
  131. $send_data = array();
  132. $send_data["account"] = self::MESSAGE_ACCOUNT;
  133. $send_data["password"] = strtolower(md5(self::MESSAGE_PASSWORD));
  134. $send_data["sign"] = static::getSign($main_corp_id);
  135. $url = "http://www.dh3t.com/json/sms/Deliver";
  136. $response = Msg::send_post_json($url, urldecode(json_encode($send_data)));
  137. $error_code = $response[0] == 200 ? 0 : -1;
  138. if ($error_code == -1) {
  139. return false;
  140. } else {
  141. return $response;
  142. }
  143. }
  144. /**
  145. * Function Description:获取请求结果
  146. * Function Name: curlQuery
  147. * @param $url
  148. *
  149. * @return mixed
  150. *
  151. * @author Steven
  152. */
  153. static function curlQuery($url)
  154. {
  155. //设置附加HTTP头
  156. $addHead = array(
  157. "Content-type: application/json"
  158. );
  159. //初始化curl,当然,你也可以用fsockopen代替
  160. $curl_obj = curl_init();
  161. //设置网址
  162. curl_setopt($curl_obj, CURLOPT_URL, $url);
  163. //附加Head内容
  164. curl_setopt($curl_obj, CURLOPT_HTTPHEADER, $addHead);
  165. //是否输出返回头信息
  166. curl_setopt($curl_obj, CURLOPT_HEADER, 0);
  167. //将curl_exec的结果返回
  168. curl_setopt($curl_obj, CURLOPT_RETURNTRANSFER, 1);
  169. //设置超时时间
  170. curl_setopt($curl_obj, CURLOPT_TIMEOUT, 15);
  171. //执行
  172. $result = curl_exec($curl_obj);
  173. //关闭curl回话
  174. curl_close($curl_obj);
  175. return $result;
  176. }
  177. /**
  178. * Function Description:简单处理下url,sina对于没有协议(http://)开头的和不规范的地址会返回错误
  179. * Function Name: filterUrl
  180. * @param string $url
  181. *
  182. * @return bool|string
  183. *
  184. * @author Steven
  185. */
  186. static function filterUrl($url = '')
  187. {
  188. $url = trim(strtolower($url));
  189. $url = trim(preg_replace('/^http:\//', '', $url));
  190. if ($url == '')
  191. return false;
  192. else
  193. return urlencode('http://' . $url);
  194. }
  195. /**
  196. * Function Description:根据长网址获取短网址
  197. * Function Name: sinaShortenUrl
  198. * @param $long_url
  199. *
  200. * @return bool
  201. *
  202. * @author Steven
  203. */
  204. static function sinaShortenUrl($long_url)
  205. {
  206. return "";//test
  207. /*
  208. $access_url = "https://api-ssl.bitly.com/v3/shorten?access_token=".BITACCESSTOKEN."&longUrl=".$long_url;
  209. $result = httpRequest($access_url);
  210. $return_result = json_decode($result,true);
  211. if( $return_result["status_code"] == 200 ) {
  212. $url = $return_result["data"]["url"];
  213. $return_url = str_replace("http://", "https://", $url);
  214. return $return_url;
  215. }
  216. */
  217. //拼接请求地址,此地址你可以在官方的文档中查看到
  218. $url = 'http://api.t.sina.com.cn/short_url/shorten.json?source=' . self::$sinaAppKey . '&url_long=' . $long_url;
  219. //获取请求结果
  220. $result = self::curlQuery($url);
  221. //下面这行注释用于调试,
  222. //print_r($result);exit();
  223. //解析json
  224. $json = json_decode($result);
  225. //异常情况返回false
  226. if (isset($json->error) || !isset($json[0]->url_short) || $json[0]->url_short == '')
  227. return false;
  228. else
  229. return $json[0]->url_short;
  230. }
  231. /**
  232. * Function Description:根据短网址获取长网址,此函数重用了不少sinaShortenUrl中的代码,以方便阅读对比,可以自行合并两个函数
  233. * Function Name: sinaExpandUrl
  234. * @param $short_url
  235. *
  236. * @return bool
  237. *
  238. * @author Steven
  239. */
  240. static function sinaExpandUrl($short_url)
  241. {
  242. //拼接请求地址,此地址你可以在官方的文档中查看到
  243. $url = 'http://api.t.sina.com.cn/short_url/expand.json?source=' . self::$sinaAppKey . '&url_short=' . $short_url;
  244. //获取请求结果
  245. $result = self::curlQuery($url);
  246. //下面这行注释用于调试
  247. //print_r($result);exit();
  248. //解析json
  249. $json = json_decode($result);
  250. //异常情况返回false
  251. if (isset($json->error) || !isset($json[0]->url_long) || $json[0]->url_long == '')
  252. return false;
  253. else
  254. return $json[0]->url_long;
  255. }
  256. }