thinkphp一個發送短信的接口問題

使用thinkphp寫一個發送短信接口;遇到的一系列問題。

自己可以定幾個規則(我定的規則是):

1、同一個電話號碼5分鐘內不能重發發送;

2、同一個電話號碼一天不能超過五條;

3、配備電話號碼的正確性(使用正則表達式:'/^[1]+[3,4,5,8,7]+\d{9}/');

如果爲了防止有人無休止的刷你的短信接口;你可以再加一個加密;

php代碼如下:

進入發送短信頁面前就將加密串在方法裏寫好:{   $str1=rand(100000, 999999);  $verif = md5($str1);  session("phoneverify",$verif);   }。


public function phone_add(){

$phone_from = M("phone_from ");  //短信記錄表


//得到發送短信的號碼 

$phone = $_POST["phone"]; // 是get,自行修改;

if(!preg_match('/^[1]+[3,4,5,8,7]+\d{9}/',$phone)){
$this->error('號碼錯誤');
exit;
}

//發送短信驗證碼

$stra = rand(100000, 999999);

$pverif = md5($stra);

session("phone_verify_phone",$pverif);

//驗證加密串是否正確

if($_POST['phone_ver']==$_SESSION['phoneverify']){   //   phone_ver爲頁面傳過來的加密串

//規則:短信五分鐘內不能重發發送。

$date_phone['phone'] = $_POST["phone"]; //號碼
$find_phone = $phone_from ->where($date_phone)->limit(1)->order("id desc")->select();

//判斷上一次發送短信時間
$ttime = time()-$find_phone[0]['time'];

if($find_phone[0]['time']!='' && $ttime<300){

$this->error('五分鐘內不能重複發送。');

}

//一天時間內不能大於5條
$date_date['phone'] = $_POST["phone"]; //號碼
$date_date['time'] = (string) array('between',array(strtotime(date('Y-m-d 00:00:00')),strtotime(date('Y-m-d 23:59:59')))); //時間 
$smeid = $phone_from ->where($date_date)->count();

if($smeid>=5){

$this->error('短信一天不能超過五條');

}

$id = '接口用戶名';
$password = '密碼';
$to = $phone;  //號碼
$Content = '您的驗證碼:'.$stra.',24分鐘內有效,(請勿告知任何他人)。'; //短信內容
$content = iconv("UTF-8","GB2312",$Content);
$url="接口路徑";
$data = "uid=%s&password=%s&to=%s&content=%s&time=";  //參數1

$rdata = sprintf($data, $id, $password, $to, $content);  //參數2

$ch = curl_init();
curl_setopt($ch, CURLOPT_POST,1);
curl_setopt($ch, CURLOPT_POSTFIELDS,$rdata);
curl_setopt($ch, CURLOPT_URL,$url);
curl_setopt($ch,CURLOPT_RETURNTRANSFER,true);
$result = curl_exec($ch);
curl_close($ch); //關閉連接

//請自行處理返回信息

if($result=='0'){

$date_short['time'] = time();
$date_short['phone'] = $telephone;
$date_short['content'] = $stra;
$phone->add($date_short);
  //將發送的短信寫入記錄表

$this->success("發送短信成功。",'跳轉鏈接');

}else{

$this->error("發送短信失敗。",'跳轉鏈接'); //或短信條數不足;

}

}else{

$this->error('請不要重複發送');
exit;
}


}







發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章