| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179 | <?phpnamespace My;/** * 短信驱动 * @author   Devil * @blog     http://gong.gg/ * @version  0.0.1 * @datetime 2016-12-01T21:51:08+0800 */class Sms{	private $expire_time;	private $key_code;	private $sign;	public $error;	/**	 * [__construct 构造方法]	 * @author   Devil	 * @blog     http://gong.gg/	 * @version  0.0.1	 * @datetime 2017-03-07T14:03:02+0800	 * @param    [int]        $param['interval_time'] 	[间隔时间(默认30)单位(秒)]	 * @param    [int]        $param['expire_time'] 	[到期时间(默认30)单位(秒)]	 * @param    [string]     $param['key_prefix'] 		[验证码种存储前缀key(默认 空)]	 */	public function __construct($param = array())	{		$this->sign = '【'.MyC('common_sms_sign').'】';		$this->interval_time = isset($param['interval_time']) ? intval($param['interval_time']) : 30;		$this->expire_time = isset($param['expire_time']) ? intval($param['expire_time']) : 30;		$this->key_code = isset($param['key_prefix']) ? trim($param['key_prefix']).'_sms_code' : '_sms_code';	}	/**	 * [SendText 发送文字短信]	 * @author   Devil	 * @blog     http://gong.gg/	 * @version  0.0.1	 * @datetime 2017-03-07T14:16:26+0800	 * @param    [string]    $mobile  [手机号码]	 * @param    [string]    $content [短信内容]	 * @param    [string]    $code    [验证码(存在则种验证码)]	 */	public function SendText($mobile, $content, $code = '')	{		// 是否频繁操作		if(!$this->IntervalTimeCheck())		{			$this->error = L('common_prevent_harassment_error');			return false;		}		// 验证码替换		if(!empty($code))		{			$content = str_replace('#code#', $code, $content);		}		// 请求发送		$param = array(				'apikey'  =>  MyC('common_sms_apikey'),				'text'    =>  $this->sign.$content,				'mobile'  =>  $mobile,			);		$result = json_decode(Fsockopen_Post('https://sms.yunpian.com/v2/sms/single_send.json', $param), true);		// 错误信息		if(isset($result['detail']))		{			$this->error = $result['detail'];		}		// 是否发送成功		if(isset($result['code']) && $result['code'] == 0)		{			// 是否存在验证码			if(!empty($code))			{				$this->KindofSession($code);			}			return true;		}		return false;	}	/**	 * [KindofSession 种验证码session]	 * @author   Devil	 * @blog     http://gong.gg/	 * @version  0.0.1	 * @datetime 2017-03-07T14:59:13+0800	 * @param    [string]      $code [验证码]	 */	private function KindofSession($code)	{		$_SESSION[$this->key_code] = array(				'code' => $code,				'time' => time(),			);	}	/**	 * [CheckExpire 验证码是否过期]	 * @author   Devil	 * @blog     http://gong.gg/	 * @version  0.0.1	 * @datetime 2017-03-05T19:02:26+0800	 * @return   [boolean] [有效true, 无效false]	 */	public function CheckExpire()	{		if(isset($_SESSION[$this->key_code]))		{			$data = $_SESSION[$this->key_code];			return (time() <= $data['time']+$this->expire_time);		}		return false;	}	/**	 * [CheckCorrect 验证码是否正确]	 * @author   Devil	 * @blog     http://gong.gg/	 * @version  0.0.1	 * @datetime 2017-03-05T16:55:00+0800	 * @param    [string] $code    [验证码(默认从post读取)]	 * @return   [booolean]        [正确true, 错误false]	 */	public function CheckCorrect($code = '')	{		if(isset($_SESSION[$this->key_code]['code']))		{			if(empty($code) && isset($_POST['code']))			{				$code = trim($_POST['code']);			}			return ($_SESSION[$this->key_code]['code'] == $code);		}		return false;	}	/**	 * [Remove 验证码清除]	 * @author   Devil	 * @blog     http://gong.gg/	 * @version  0.0.1	 * @datetime 2017-03-08T10:18:20+0800	 * @return   [other] [无返回值]	 */	public function Remove()	{		if(isset($_SESSION[$this->key_code]))		{			unset($_SESSION[$this->key_code]);		}	}	/**	 * [IntervalTimeCheck 是否已经超过控制的间隔时间]	 * @author   Devil	 * @blog     http://gong.gg/	 * @version  0.0.1	 * @datetime 2017-03-10T11:26:52+0800	 * @return   [booolean]        [已超过间隔时间true, 未超过间隔时间false]	 */	private function IntervalTimeCheck()	{		if(isset($_SESSION[$this->key_code]))		{			$data = $_SESSION[$this->key_code];			return (time() > $data['time']+$this->interval_time);		}		return true;	}}?>
 |