You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

131 lines
4.0 KiB
PHTML

2 years ago
<?php
// +----------------------------------------------------------------------
// | OneThink [ WE CAN DO IT JUST THINK IT ]
// +----------------------------------------------------------------------
// | Copyright (c) 2013 http://www.onethink.cn All rights reserved.
// +----------------------------------------------------------------------
// | Author: 麦当苗儿 <zuojiazi@vip.qq.com> <http://www.zjzit.cn>
// +----------------------------------------------------------------------
namespace Common\Model;
use Think\Model;
class SmsLogModel extends Model
{
public function __construct($name = '', $tablePrefix = '', $connection = '')
{
/* 设置默认的表前缀 */
$this->tablePrefix = 'tab_';
/* 执行构造方法 */
parent::__construct($name, $tablePrefix, $connection);
}
public static $msg = [
'register' => '执行注册操作',
'login' => '执行登录操作',
'forget' => '执行修改密码操作',
];
public static $sms_sign = [
2 years ago
'001' => '聚游',
2 years ago
];
public static $msgContent = [
// '30974' => '手机验证码:{1}。您正在{2}。该验证码在{3}分钟内有效。如非本人操作,请忽略此短信。',
'30974' => '{1}您的验证码为{2}10分钟内有效为保证账户安全请勿向他人泄露验证信息。',
];
public function sendCode($strPhone, $code = '')
{
$params[0] = self::$sms_sign['001'];
$params[1] = $code;
$str = self::getContent(self::$msgContent['30974'], $params);
$msg = $this->sms($str, $strPhone, $params[1]);
return $msg;
}
/**
* 获取短信模板
* @param [type] $temp [description]
* @param [type] $params [description]
* @return [type] [description]
*/
public static function getContent($temp, $params)
{
foreach ($params as $key => $value) {
$temp = str_replace('{' . ($key + 1) . '}', $value, $temp);
}
return $temp;
}
public function create($arData)
{
$arData['ip'] = get_client_ip();
$arData['create_time'] = time();
$this->add($arData);
}
public function sms($content, $phone, $code)
{
$data = [
'apName' => C('zhongwang.smtp_account'),
'apPassword' => C('zhongwang.smtp_password'),
'calledNumber' => $phone,
'content' => $content,
];
$resp = $this->curlPost("http://139.224.36.226:382/wgws/BatchSubmit", $data);
$resp = self::XmlToArray($resp);
$resp = $resp['submitResp'];
$arr = [
'code' => $code,
'phone' => $phone,
'content' => $content,
'status' => $resp['error'],
'msg' => $resp['message'],
];
$this->create($arr);
$resp['code'] = $code;
return $resp;
}
public function curlPost($url, $postFields)
{
$postFields = http_build_query($postFields);
$ch = curl_init();
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_POSTFIELDS, $postFields);
$result = curl_exec($ch);
curl_close($ch);
return $result;
}
/**
* xml转数组
* @param type $xmlstring
* @return type array
*/
public static function XmlToArray($xmlstring)
{
$tmp = explode("\n", $xmlstring);
$xmlstring = "";
foreach ($tmp as $val) {
$xmlstring .= trim($val);
}
$xml_parser = xml_parser_create();
if (!xml_parse($xml_parser, $xmlstring, true)) {
xml_parser_free($xml_parser);
return false;
} else {
return json_decode(json_encode(simplexml_load_string($xmlstring, 'SimpleXMLElement', LIBXML_NOCDATA)), true);
}
}
}