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 相关文章推荐
dede3.1分页文字采集过滤规则详说(图文教程)续四
Apr 03 PHP
PHP 裁剪图片成固定大小代码方法
Sep 09 PHP
PHP面向接口编程 耦合设计模式 简单范例
Mar 23 PHP
php 模拟POST提交的2种方法详解
Jun 17 PHP
简单的php中文转拼音的实现代码
Feb 11 PHP
PHP编程 SSO详细介绍及简单实例
Jan 13 PHP
PHP 二维关联数组根据其中一个字段排序(推荐)
Apr 04 PHP
PHP常用操作类之通信数据封装类的实现
Jul 16 PHP
Laravel中为什么不使用blpop取队列详析
Aug 01 PHP
php+croppic.js实现剪切上传图片功能
Aug 14 PHP
phpmyadmin在宝塔面板里进不去的解决方案
Jul 06 PHP
PhpStorm2020 + phpstudyV8 +XDebug的教程详解
Sep 17 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
thinkphp的URL路由规则与配置实例
2014/11/26 PHP
php获取图片信息的方法详解
2015/12/10 PHP
权威JavaScript 中的内存泄露模式
2007/08/13 Javascript
javascript自执行函数之伪命名空间封装法
2010/12/25 Javascript
js中获取事件对象的方法小结
2011/03/13 Javascript
基于jQuery的获取标签名的代码
2012/07/16 Javascript
jquery拖动插件(jquery.drag)使用介绍
2013/06/18 Javascript
jQuery实现鼠标滑过遮罩并高亮显示效果
2013/07/16 Javascript
深入理解JavaScript系列(30):设计模式之外观模式详解
2015/03/03 Javascript
javascript操作Cookie(设置、读取、删除)方法详解
2015/03/18 Javascript
使用canvas实现仿新浪微博头像截取上传功能
2015/09/02 Javascript
JS基于HTML5的canvas标签实现炫目的色相球动画效果实例
2016/08/24 Javascript
浅谈Node.js:理解stream
2016/12/08 Javascript
关于vuex的学习实践笔记
2017/04/05 Javascript
[56:18]DOTA2上海特级锦标赛主赛事日 - 4 败者组第四轮#2 MVP.Phx VS Fnatic第二局
2016/03/05 DOTA
python如何为创建大量实例节省内存
2018/03/20 Python
将tensorflow的ckpt模型存储为npy的实例
2018/07/09 Python
python tkinter界面居中显示的方法
2018/10/11 Python
Python叠加两幅栅格图像的实现方法
2019/07/05 Python
python Pandas库基础分析之时间序列的处理详解
2019/07/13 Python
如何在VSCode下使用Jupyter的教程详解
2020/07/13 Python
matplotlib实现数据实时刷新的示例代码
2021/01/05 Python
html5新增的定时器requestAnimationFrame实现进度条功能
2018/12/13 HTML / CSS
泰国办公用品购物网站:OfficeMate
2018/02/04 全球购物
意大利折扣和优惠券网站:Groupalia
2019/10/09 全球购物
西部世纪面试题
2014/12/05 面试题
某公司面试题
2012/03/05 面试题
介绍下static、final、abstract区别
2015/01/30 面试题
重写子类方法时,抛出异常的书写注意事项
2015/10/17 面试题
生产内勤岗位职责
2013/12/07 职场文书
节约粮食标语
2014/06/18 职场文书
三下乡个人总结
2015/03/04 职场文书
2016年小学优秀班主任事迹材料
2016/02/29 职场文书
2019单位介绍信怎么写
2019/06/24 职场文书
java实现web实时消息推送的七种方案
2022/07/23 Java/Android