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静态类
Nov 25 PHP
php 结果集的分页实现代码
Mar 10 PHP
php 魔术方法使用说明
Oct 20 PHP
php用数组返回无限分类的列表数据的代码
Aug 08 PHP
全新的PDO数据库操作类php版(仅适用Mysql)
Jul 22 PHP
PHP基础学习之流程控制的实现分析
Apr 28 PHP
php权重计算方法代码分享
Jan 09 PHP
php实现refresh刷新页面批量导入数据的方法
Dec 23 PHP
PHP 验证登陆类分享
Mar 13 PHP
ThinkPHP中create()方法自动验证实例
Apr 26 PHP
PHP 结合 Boostrap 结合 js 实现学生列表删除编辑及搜索功能
May 21 PHP
PHP如何使用JWT做Api接口身份认证的实现
Feb 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
追忆往昔!浅谈收音机的百年发展历史
2021/03/01 无线电
用PHP连接Oracle for NT 远程数据库
2006/10/09 PHP
解析PHP计算页面执行时间的实现代码
2013/06/18 PHP
CI框架源码解读之URI.php中_fetch_uri_string()函数用法分析
2016/05/18 PHP
PHP中抽象类和抽象方法概念与用法分析
2016/05/24 PHP
利用laravel搭建一个迷你博客实战教程
2017/08/13 PHP
PHP二维数组分页2种实现方法解析
2020/07/09 PHP
jquery text,radio,checkbox,select操作实现代码
2009/07/09 Javascript
基于jquery tab切换(防止页面刷新)
2012/05/23 Javascript
addEventListener()第三个参数useCapture (Boolean)详细解析
2013/11/07 Javascript
Jquery的Tabs内容轮换效果实现代码,几行搞定
2014/02/12 Javascript
JS中prototype的用法实例分析
2015/03/19 Javascript
JavaScript中用sort()方法对数组元素进行排序的操作
2015/06/09 Javascript
完美的js div拖拽实例代码
2016/09/24 Javascript
bootstrap网格系统使用方法解析
2017/01/13 Javascript
jQuery EasyUI Accordion可伸缩面板组件使用详解
2017/02/28 Javascript
使用 Vue.js 仿百度搜索框的实例代码
2017/05/09 Javascript
详解利用jsx写vue组件的方法示例
2017/07/17 Javascript
微信小程序中post方法与get方法的封装
2017/09/26 Javascript
angular2系列之路由转场动画的示例代码
2017/11/09 Javascript
在Vue中使用icon 字体图标的方法
2019/06/14 Javascript
解决layer.open后laydate失效的问题
2019/09/06 Javascript
浅谈TypeScript 用 Webpack/ts-node 运行的配置记录
2019/10/11 Javascript
使用JavaScript获取Django模板指定键值数据
2020/05/27 Javascript
python OpenCV学习笔记实现二维直方图
2018/02/08 Python
24式加速你的Python(小结)
2019/06/13 Python
python 爬取学信网登录页面的例子
2019/08/13 Python
html5 input属性使用示例
2013/06/28 HTML / CSS
Vivo俄罗斯官方在线商店:中国智能手机品牌
2019/10/04 全球购物
施华洛世奇巴西官网:SWAROVSKI巴西
2019/12/03 全球购物
海南地接欢迎词
2014/01/14 职场文书
个人廉洁自律承诺书
2014/03/27 职场文书
公司寄语大全
2014/04/10 职场文书
处级干部反四风个人对照检查材料思想汇报
2014/09/27 职场文书
小平小道观后感
2015/06/09 职场文书
如何利用map实现Nginx允许多个域名跨域
2021/03/31 Servers