php如何实现短信提示,php实现短信发送代码

这是一个PHP类,用于发送短信。类中包含了用户ID、密码、模板ID等属性,以及发送HTTP请求的方法。通过创建XML内容并进行MD5加密授权,实现了向指定服务器发送短信的功能。如果网络请求成功,返回状态码1000表示发送成功,其他状态码表示失败。
摘要由CSDN通过智能技术生成

class Sms

{

private $userId = 'XXXXX';

private $password = 'XXXXXX';

private $templateId = 'XXXXXX';

/**

* @var string 短信服务器地址

*/

private $server_uri = 'XXXXXX';

private $port = 'XXXXXX';

/**

* 发送短信

* @param $message 信息内容

* @param $mobile 手机号码

* @param string $signature 签名

* @return bool 成功返回true, 网络请求失败返回false, 其他返回失败编码

*/

public function sendOneMsg($message, $mobile, $signature='demo')

{

$xml_content = $this->createXmlContent($message, $mobile, $signature);

$xml = $this->sendHttpRequest(trim($xml_content));

if(! $xml) {

return false; // 网络请求失败

}

// 解析返回的编码

$res = simplexml_load_string($xml);

if($res->retCode == 1000) {

return true;

}

return $res->retCode;

}

/**

* 创建 xml内容

* @param $message 信息

* @param $mobile 要发送的手机号码

* @param $signature 签名

* @return string

*/

private function createXmlContent($message, $mobile, $signature)

{

$data = array(

'userId' => $this->userId, // 账号

'password' => $this->password, // 小写的md5后的用户密码

'templateId' => $this->templateId, // 模板id

'phone' => $mobile,

'port' => $this->port,

'data' => $message,

'signature' => $signature,

);

// 设置xml版本和编码

$dom = new \DOMDocument('1.0', 'UTF-8');

// 创建根节点

$request = $dom->createElement('request');

$dom->appendChild($request);

foreach($data as $key => $val) {

// 创建元素

$key = $dom->createElement($key);

$request->appendChild($key);

// 创建元素值

$text = $dom->createTextNode($val);

$key->appendChild($text);

}

return $dom->saveXML();

}

/**

* 发送http请求

* @param $xml_content

* @return mixed

*/

private function sendHttpRequest($xml_content)

{

$now = time();

$headers[] = 'Content-Type:text/xml';

$headers[] = 'Content-Length:' . strlen($xml_content);

$headers[] = 'Cmd:mt';

$headers[] = 'TS:'. $now;

$headers[] = 'Authorization:' . strtoupper(md5($xml_content. $now . $this->password));

$ch = curl_init();

curl_setopt($ch, CURLOPT_URL, $this->server_uri);

curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);

curl_setopt($ch, CURLOPT_POST, 1);

curl_setopt($ch, CURLOPT_POSTFIELDS, $xml_content);

curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);

curl_setopt($ch, CURLOPT_HEADER, 0);

$res = curl_exec($ch);

curl_close($ch);

//header('Content-Type:text/html; charset=utf-8');

return $res;

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值