注意:如果沒有購買短信,則只用來測試短信速度,短信內容不可編輯,只可修改驗證碼數字。
測試操作如圖:
進入正題:
使用短信寶,需要一個SmsBao.class.php文件,這個文件會放在Org目錄下,文件內容在最下方
調用代碼:
<?phpnamespace Home\Controller;use Think\Controller;use Org\Sms\SmsBao;class IndexController extends Controller { public function index(){ $sms = new SmsBao("賬號", "密碼"); $msg = $sms->sendSms("1537539****", "這是一個測試短信!"); if($msg['status'] == 0) { echo '發送成功!'; } else { echo '發送失??!'; } echo $sms->getBalance(); // 返回剩余條數 } }
訪問后會顯示
登錄短信寶,進入請求記錄會看到
如果從短信寶測試入口測試,可以在手機上看到短信,然后在官網的發送記錄會看到內容
回復的話,會在回復記錄中看到回復的內容
附加:
SmsBao.class.php 內容
<?php// +----------------------------------------------------------------------// | smsbao for thinkPHP// +----------------------------------------------------------------------// | Copyright (c) 2005 http://smsbao.com All rights reserved.// +----------------------------------------------------------------------// | Licensed ( http://smsbao.com )// +----------------------------------------------------------------------namespace Org\Sms;/** * SmsBao實現類 * @category Think * @package Think * @subpackage Sms */class SmsBao { private $account;//短信包賬戶 private $password;//密碼 private $balance;//短信剩余條數 const sendSmsUrl = "http://api.smsbao.com/sms"; const queryBalanceUrl = "http://api.smsbao.com/query"; /** * 架構函數 * @access public * @param string $account 在短信寶注冊的賬戶名 * @param string $password 在短信寶注冊的賬戶名的密碼 */ public function __construct($account,$password) { if (empty($account) || empty($password)) { E("用戶名和密碼不可為空!"); } $this->account = $account; $this->password = $password; } /** * 發送短信函數 * @access public * @param string $mobile 手機號,多個手機號用英文逗號分隔 * @param string $content 發送內容 * @return array 返回值為數組,其中status為0表明發送成功,其他情況下發送失敗,失敗原因為msg */ public function sendSms($mobile,$content){ $param['u'] = $this->account; $param['p'] = md5($this->password); $param['m'] = $mobile; $param['c'] = $content; $ret = self::http(self::sendSmsUrl, $param); $data['status'] = $ret; $data['msg'] = $ret == 0 ?'發送成功' : self::getResult($ret); return $data; } /** * 獲取短信剩余條數函數 * @access public */ public function getBalance(){ $param['u'] = $this->account; $param['p'] = md5($this->password); $ret = self::http(self::queryBalanceUrl, $param); $retArr = split("\n", $ret); $balanceArr = split(",", $retArr[1]); $this->balance = $retArr[0] == 0 ? $balanceArr[1] : self::getResult($ret); return $this->balance; } /** * 發送http請求 * @access protected * @param string $url 請求地址 * @param string $param get方式請求內容,數組形式,post方式時無效 * * @param string $data post請求方式時的內容,get方式時無效 * @param string $method 請求方式,默認get */ protected static function http($url, $param, $data = '', $method = 'GET'){ $opts = array( CURLOPT_TIMEOUT => 30, CURLOPT_RETURNTRANSFER => 1, CURLOPT_SSL_VERIFYPEER => false, CURLOPT_SSL_VERIFYHOST => false, ); /* 根據請求類型設置特定參數 */ $opts[CURLOPT_URL] = $url . '?' . http_build_query($param); if(strtoupper($method) == 'POST'){ $opts[CURLOPT_POST] = 1; $opts[CURLOPT_POSTFIELDS] = $data; if(is_string($data)){ //發送JSON數據 $opts[CURLOPT_HTTPHEADER] = array( 'Content-Type: application/json; charset=utf-8', 'Content-Length: ' . strlen($data), ); } } /* 初始化并執行curl請求 */ $ch = curl_init(); curl_setopt_array($ch, $opts); $data = curl_exec($ch); $error = curl_error($ch); curl_close($ch); //發生錯誤,拋出異常 if($error) throw new \Exception('請求發生錯誤:' . $error); return $data; } private function getResult($key){ $rst['30'] = '密碼錯誤'; $rst['40'] = '賬號不存在'; $rst['41'] = '余額不足'; $rst['42'] = '帳號過期'; $rst['43'] = 'IP地址限制'; $rst['50'] = '內容含有敏感詞'; $rst['51'] = '手機號碼不正確'; return $rst[$key]; } }
聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com