PHP发送短信代码分享


Posted in PHP onAugust 11, 2015

方法一(比较好,推荐)

//PHP发送短信 Monxin专用(PHP代码函数)
//本代码基于Monxin 运行
//代码来源:Monxin ./config/functions.php
 
function sms($config,$language,$pdo,$sender,$phone_number,$content){
   
  //demo var_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($arr as $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_number as $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="insert into ".$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)){
        return send_sms($config,$pdo,$pdo->lastInsertId());
      }else{
        return false;
      }
    }
  }
 
}

例2:在PHP5中通过file_get_contents函数发送短信(HTTP GET 方式)

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,请使用下行语句输出返回信息。   
//echo iconv("UTF-8", "GBK", $result);   
?>

例3:在PHP中通过curl发送短信(HTTP POST 方式)

PHP代码

<?php   
$data["username"] = 13812345678;   
$data["password"] = "password123";   
$data["sendto"] = 13512345678;   
$data["message"] = "这是一条测试短信!";   
   
$curl = new Curl_Class();   
$result = @$curl->post("http://sms.api.bz/fetion.php", $data);   
echo $result; //返回信息默认为UTF-8编码的汉字,如果你的页面编码为gb2312,请使用下行语句输出返回信息。   
//echo iconv("UTF-8", "GBK", $result);   
   
//curl类   
class Curl_Class   
{   
function Curl_Class()   
{   
return true;   
}   
   
function execute($method, $url, $fields = '', $userAgent = '', $httpHeaders = '', $username = '', $password = '')   
{   
$ch = Curl_Class::create();   
if (false === $ch)   
{   
return false;   
}   
   
if (is_string($url) && strlen($url))   
{   
$ret = curl_setopt($ch, CURLOPT_URL, $url);   
}   
else   
{   
return false;   
}   
//是否显示头部信息   
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 ($fields AS $key => $val)   
{   
$sets[] = $key . '=' . urlencode($val);   
}   
$fields = implode('&',$sets);   
}   
curl_setopt($ch, CURLOPT_POSTFIELDS, $fields);   
}   
else if ('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);   
return array(curl_error($ch), curl_errno($ch));   
}   
else   
{   
curl_close($ch);   
if (!is_string($ret) || !strlen($ret))   
{   
return false;   
}   
return $ret;   
}   
}   
   
function post($url, $fields, $userAgent = '', $httpHeaders = '', $username = '', $password = '')   
{   
$ret = Curl_Class::execute('POST', $url, $fields, $userAgent, $httpHeaders, $username, $password);   
if (false === $ret)   
{   
return false;   
}   
   
if (is_array($ret))   
{   
return false;   
}   
return $ret;   
}   
   
function get($url, $userAgent = '', $httpHeaders = '', $username = '', $password = '')   
{   
$ret = Curl_Class::execute('GET', $url, '', $userAgent, $httpHeaders, $username, $password);   
if (false === $ret)   
{   
return false;   
}   
   
if (is_array($ret))   
{   
return false;   
}   
return $ret;   
}   
   
function create()   
{   
$ch = null;   
if (!function_exists('curl_init'))   
{   
return false;   
}   
$ch = curl_init();   
if (!is_resource($ch))   
{   
return false;   
}   
return $ch;   
}   
   
}
PHP 相关文章推荐
php对gzip文件或者字符串解压实例参考
Jul 25 PHP
php下删除一篇文章生成的多个静态页面
Aug 08 PHP
获取PHP警告错误信息的解决方法
Jun 03 PHP
PHP截取指定图片大小的方法
Dec 10 PHP
php从数据库查询结果生成树形列表的方法
Apr 17 PHP
PHP SplObjectStorage使用实例
May 12 PHP
WordPress中获取页面链接和标题的相关PHP函数用法解析
Dec 17 PHP
PHP定时任务获取微信access_token的方法
Oct 10 PHP
php 解析xml 的四种方法详细介绍
Oct 26 PHP
php strftime函数获取日期时间(switch用法)
May 16 PHP
Yii2框架配置文件(Application属性)与调试技巧实例分析
May 27 PHP
使用laravel和ajax实现整个页面无刷新的操作方法
Oct 03 PHP
php实现可逆加密的方法
Aug 11 #PHP
PHP实现获取某个月份周次信息的方法
Aug 11 #PHP
PHP实现删除字符串中任何字符的函数
Aug 11 #PHP
详解php的socket通信
Aug 11 #PHP
Java中final关键字详解
Aug 10 #PHP
php生成二维码
Aug 10 #PHP
PHP的文件操作与算法实现的面试题示例
Aug 10 #PHP
You might like
CodeIgniter上传图片成功的全部过程分享
2013/08/12 PHP
PHP数据库万能引擎类adodb配置使用以及实例集锦
2014/06/12 PHP
ThinkPHP模板引擎之导入资源文件方法详解
2014/06/18 PHP
php类的定义与继承用法实例
2015/07/07 PHP
thinkPHP中分页用法实例分析
2015/12/26 PHP
Yii框架中用response保存cookie,用request读取cookie的原理解析
2019/09/04 PHP
Thinkphp 框架扩展之Widget扩展实现方法分析
2020/04/23 PHP
bcastr2.0 通用的图片浏览器
2006/11/22 Javascript
javascript实现的网页局布刷新效果
2008/12/01 Javascript
js实现图片从左往右渐变切换效果的方法
2015/02/06 Javascript
JS Array创建及concat()split()slice()的使用方法
2016/06/03 Javascript
jQuery原理系列-常用Dom操作详解
2016/06/07 Javascript
javascript作用域、作用域链(菜鸟必看)
2016/06/16 Javascript
在微信、支付宝、百度钱包实现点击返回按钮关闭当前页面和窗口的方法
2016/08/05 Javascript
利用jquery给指定的table动态添加一行、删除一行的方法
2016/10/12 Javascript
jQuery Mobile漏洞会有跨站脚本攻击风险
2017/02/12 Javascript
jQuery实现广告条滚动效果
2017/08/22 jQuery
利用vue组件自定义v-model实现一个Tab组件方法示例
2017/12/06 Javascript
移动web开发之touch事件实例详解
2018/01/17 Javascript
使用webpack3.0配置webpack-dev-server教程
2018/05/29 Javascript
对vue中v-on绑定自定事件的实例讲解
2018/09/06 Javascript
vue 开发企业微信整合案例分析
2019/12/02 Javascript
基于node+vue实现简单的WebSocket聊天功能
2020/02/01 Javascript
Javascript实现关闭广告效果
2021/01/29 Javascript
[03:22]DAC最前线(第二期)—DOTA2亚洲邀请赛主赛场周边及线路探访
2015/01/24 DOTA
Python中的is和id用法分析
2015/01/26 Python
在SAE上部署Python的Django框架的一些问题汇总
2015/05/30 Python
python实现将html表格转换成CSV文件的方法
2015/06/28 Python
Pytorch提取模型特征向量保存至csv的例子
2020/01/03 Python
鉴定评语大全
2014/05/05 职场文书
副处级干部考察材料
2014/05/17 职场文书
演讲比赛策划方案
2014/06/11 职场文书
社区班子个人对照检查材料思想汇报
2014/10/07 职场文书
简单聊聊Vue中的计算属性和属性侦听
2021/10/05 Vue.js
SQL注入详解及防范方法
2021/12/06 MySQL
php解析非标准json、非规范json的方式实例
2022/05/10 PHP