PHP发送短信代码分享
方法一(比较好,推荐)
//PHP发送短信Monxin专用(PHP代码函数)
//本代码基于Monxin运行
//代码来源:Monxin./config/functions.php
functionsms($config,$language,$pdo,$sender,$phone_number,$content){
//demovar_dump(sms(self::$config,self::$language,$pdo,"system","18074507509,15507455992","测试内容,时间".date("H:i:s",time())));
$sender=safe_str($sender);
$content=safe_str($content);
$arr=explode(',',$config['sms']['disable_phrase']);
$disable=false;
foreach($arras$v){
if(strpos($content,$v)!==false){$phrase=$v;$disable=true;continue;}
}
if($disable){return$language['exist_disable_phrase']."".$phrase;}
$phone_number=explode(',',$phone_number);
$phone_number=array_unique($phone_number);
$addressee='';
$count=0;
foreach($phone_numberas$v){
if(preg_match($config['other']['reg_phone'],$v)){$addressee.=$v.',';}
}
$addressee=trim($addressee,',');
$addressee=explode(",",$addressee);
//var_dump($addressee);
$section=ceil(count($addressee)/$config['sms']['max']);
for($i=0;$i<$section;$i++){
$phone[$i]='';
for($j=$i*$config['sms']['max'];$j<($i+1)*$config['sms']['max'];$j++){
//echo$j.',';
if(isset($addressee[$j])){$phone[$i].=$addressee[$j].$config['sms']['delimiter'];}
}
$phone[$i]=trim($phone[$i],$config['sms']['delimiter']);
$temp=explode($config['sms']['delimiter'],$phone[$i]);
$count=count($temp);
$length=ceil(strlen(preg_replace('/[\x80-\xff]{3}/','x',$content))/($config['sms']['length']/2));
$count=$length*$count;
if(!isset($timing)){$timing=0;}
if($phone[$i]!=''){
$time=time();
$sql="insertinto".$pdo->index_pre."phone_msg(`sender`,`addressee`,`content`,`state`,`time`,`count`,`timing`)values('$sender','".$phone[$i]."','".$content."','1','$time','$count','0')";
if($pdo->exec($sql)){
returnsend_sms($config,$pdo,$pdo->lastInsertId());
}else{
returnfalse;
}
}
}
}
例2:在PHP5中通过file_get_contents函数发送短信(HTTPGET方式)
PHP代码
<?php
$url="http://sms.api.bz/fetion.php?username=13812345678&password=123456&sendto=13512345678&message=短信内容";
$result=file_get_contents($url);
echo$result;//返回信息默认为UTF-8编码的汉字,如果你的页面编码为gb2312,请使用下行语句输出返回信息。
//echoiconv("UTF-8","GBK",$result);
?>
例3:在PHP中通过curl发送短信(HTTPPOST方式)
PHP代码
<?php
$data["username"]=13812345678;
$data["password"]="password123";
$data["sendto"]=13512345678;
$data["message"]="这是一条测试短信!";
$curl=newCurl_Class();
$result=@$curl->post("http://sms.api.bz/fetion.php",$data);
echo$result;//返回信息默认为UTF-8编码的汉字,如果你的页面编码为gb2312,请使用下行语句输出返回信息。
//echoiconv("UTF-8","GBK",$result);
//curl类
classCurl_Class
{
functionCurl_Class()
{
returntrue;
}
functionexecute($method,$url,$fields='',$userAgent='',$httpHeaders='',$username='',$password='')
{
$ch=Curl_Class::create();
if(false===$ch)
{
returnfalse;
}
if(is_string($url)&&strlen($url))
{
$ret=curl_setopt($ch,CURLOPT_URL,$url);
}
else
{
returnfalse;
}
//是否显示头部信息
curl_setopt($ch,CURLOPT_HEADER,false);
//
curl_setopt($ch,CURLOPT_RETURNTRANSFER,true);
if($username!='')
{
curl_setopt($ch,CURLOPT_USERPWD,$username.':'.$password);
}
$method=strtolower($method);
if('post'==$method)
{
curl_setopt($ch,CURLOPT_POST,true);
if(is_array($fields))
{
$sets=array();
foreach($fieldsAS$key=>$val)
{
$sets[]=$key.'='.urlencode($val);
}
$fields=implode('&',$sets);
}
curl_setopt($ch,CURLOPT_POSTFIELDS,$fields);
}
elseif('put'==$method)
{
curl_setopt($ch,CURLOPT_PUT,true);
}
//curl_setopt($ch,CURLOPT_PROGRESS,true);
//curl_setopt($ch,CURLOPT_VERBOSE,true);
//curl_setopt($ch,CURLOPT_MUTE,false);
curl_setopt($ch,CURLOPT_TIMEOUT,10);//设置curl超时秒数
if(strlen($userAgent))
{
curl_setopt($ch,CURLOPT_USERAGENT,$userAgent);
}
if(is_array($httpHeaders))
{
curl_setopt($ch,CURLOPT_HTTPHEADER,$httpHeaders);
}
$ret=curl_exec($ch);
if(curl_errno($ch))
{
curl_close($ch);
returnarray(curl_error($ch),curl_errno($ch));
}
else
{
curl_close($ch);
if(!is_string($ret)||!strlen($ret))
{
returnfalse;
}
return$ret;
}
}
functionpost($url,$fields,$userAgent='',$httpHeaders='',$username='',$password='')
{
$ret=Curl_Class::execute('POST',$url,$fields,$userAgent,$httpHeaders,$username,$password);
if(false===$ret)
{
returnfalse;
}
if(is_array($ret))
{
returnfalse;
}
return$ret;
}
functionget($url,$userAgent='',$httpHeaders='',$username='',$password='')
{
$ret=Curl_Class::execute('GET',$url,'',$userAgent,$httpHeaders,$username,$password);
if(false===$ret)
{
returnfalse;
}
if(is_array($ret))
{
returnfalse;
}
return$ret;
}
functioncreate()
{
$ch=null;
if(!function_exists('curl_init'))
{
returnfalse;
}
$ch=curl_init();
if(!is_resource($ch))
{
returnfalse;
}
return$ch;
}
}