首先注册短信宝,获取相关配置信息短信宝
/**
* 发送验证码
* @param $phone
* @return int
* @throws Exception
*/
public static function send($phone)
{
$code_key = 'register_code_' . $phone;
$time_key = 'register_time_' . $phone;
$send_time = Cache::get($time_key);
if ($send_time && time() - $send_time < 60) {
throw new Exception('已经发送过,请稍后重试', 2002);
}
$code = rand(1000, 9999);
Cache::set($code_key, $code, 300);
Cache::set($time_key, time(), 10);
$res = send_message($phone, $code);
if ($res) {
return $res;
} else {
throw new Exception('发送失败', 2001);
}
}
封装公共方法
/**
* 公共发送短信验证码
*/
if (!function_exists('send_message')) {
/**
* 发送手机短信验证码
* @param $mobile
* @param $code
* @return bool|string
*/
function send_message($mobile, $code)
{
# 帐号信息、 放入config
$smsapi = config('account.smsbao.smapi');
$user = config('account.smsbao.user');
$pass = config('account.smsbao.passpwd') ?: config('account.smsbao.passstr');
$content = "【1910A】尊敬的用户,您正在进行帐号注册,您的验证为:{$code},验证有效期为5分钟、过期失效、请勿泄漏";//要发送的短信内容
$sendurl = $smsapi . "sms?u=" . $user . "&p=" . $pass . "&m=" . $mobile . "&c=" . urlencode($content);
return curl_request($sendurl);
}
}
封装网络请求方法
/**
* 请求
*/
if (!function_exists('curl_request')) {
/**
* 发送请求的方法
* @param $url
* @param string $post_data
* @param string $method
* @param string $header
* @param string $type
* @return bool|string
*/
function curl_request($url, $post_data = '', $method = 'get', $header = '', $type = 'http')
{
#判断是否传送url
if ($url == '') {
return false;
}
# 初始化
$ch = curl_init($url);
# 默认是get请求。如果是post请求 设置请求方式和请求参数
if (strtolower($method) == 'post') {
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, $post_data);
}
//如果是https协议,禁止从服务器验证本地证书
if (strtolower($type) == 'https') {
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
}
//发送请求,获取返回结果
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$res = curl_exec($ch);
//关闭请求
curl_close($ch);
return $res;
}
}
配置文件
return [
'smsbao' => [
'smapi' => 'http://api.smsbao.com/',
'user' => '',//短信平台帐号
'passpwd' => '',//短信平台密码需md5
'passstr' => '',//短信平台密码
//passpwd、passstr二选一
]
];