当前位置:Gxlcms > PHP教程 > php实现sms短信发送

php实现sms短信发送

时间:2021-07-01 10:21:17 帮助过:3人阅读

本篇文章主要介绍php实现sms短信发送,感兴趣的朋友参考下,希望对大家有所帮助。

1.PHP代码

  1. <?php
  2. class Sms
  3. {
  4. private $userId = 'XXXXX';
  5. private $password = 'XXXXXX';
  6. private $templateId = 'XXXXXX';
  7. /**
  8. * @var string 短信服务器地址
  9. */
  10. private $server_uri = 'XXXXXX';
  11. private $port = 'XXXXXX';
  12. /**
  13. * 发送短信
  14. * @param $message 信息内容
  15. * @param $mobile 手机号码
  16. * @param string $signature 签名
  17. * @return bool 成功返回true, 网络请求失败返回false, 其他返回失败编码
  18. */
  19. public function sendOneMsg($message, $mobile, $signature='demo')
  20. {
  21. $xml_content = $this->createXmlContent($message, $mobile, $signature);
  22. $xml = $this->sendHttpRequest(trim($xml_content));
  23. if(! $xml) {
  24. return false; // 网络请求失败
  25. }
  26. // 解析返回的编码
  27. $res = simplexml_load_string($xml);
  28. if($res->retCode == 1000) {
  29. return true;
  30. }
  31. return $res->retCode;
  32. }
  33. /**
  34. * 创建 xml内容
  35. * @param $message 信息
  36. * @param $mobile 要发送的手机号码
  37. * @param $signature 签名
  38. * @return string
  39. */
  40. private function createXmlContent($message, $mobile, $signature)
  41. {
  42. $data = array(
  43. 'userId' => $this->userId, // 账号
  44. 'password' => $this->password, // 小写的md5后的用户密码
  45. 'templateId' => $this->templateId, // 模板id
  46. 'phone' => $mobile,
  47. 'port' => $this->port,
  48. 'data' => $message,
  49. 'signature' => $signature,
  50. );
  51. // 设置xml版本和编码
  52. $dom = new \DOMDocument('1.0', 'UTF-8');
  53. // 创建根节点
  54. $request = $dom->createElement('request');
  55. $dom->appendChild($request);
  56. foreach($data as $key => $val) {
  57. // 创建元素
  58. $key = $dom->createElement($key);
  59. $request->appendChild($key);
  60. // 创建元素值
  61. $text = $dom->createTextNode($val);
  62. $key->appendChild($text);
  63. }
  64. return $dom->saveXML();
  65. }
  66. /**
  67. * 发送http请求
  68. * @param $xml_content
  69. * @return mixed
  70. */
  71. private function sendHttpRequest($xml_content)
  72. {
  73. $now = time();
  74. $headers[] = 'Content-Type:text/xml';
  75. $headers[] = 'Content-Length:' . strlen($xml_content);
  76. $headers[] = 'Cmd:mt';
  77. $headers[] = 'TS:'. $now;
  78. $headers[] = 'Authorization:' . strtoupper(md5($xml_content. $now . $this->password));
  79. $ch = curl_init();
  80. curl_setopt($ch, CURLOPT_URL, $this->server_uri);
  81. curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
  82. curl_setopt($ch, CURLOPT_POST, 1);
  83. curl_setopt($ch, CURLOPT_POSTFIELDS, $xml_content);
  84. curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
  85. curl_setopt($ch, CURLOPT_HEADER, 0);
  86. $res = curl_exec($ch);
  87. curl_close($ch);
  88. //header('Content-Type:text/html; charset=utf-8');
  89. return $res;
  90. }
  91. }

总结:以上就是本篇文的全部内容,希望能对大家的学习有所帮助。

相关推荐:

php实例分析了php中类常量的概念

php实现针对html标签中结束标签的检测与补全功能

PHP实现针对指定后缀文件的批量上传功能

以上就是php实现sms短信发送的详细内容,更多请关注Gxl网其它相关文章!

人气教程排行