PHP发送AT指令,phpat指令_PHP教程
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了PHP发送AT指令,phpat指令_PHP教程,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含3479字,纯文字阅读大概需要5分钟。
内容图文
![PHP发送AT指令,phpat指令_PHP教程](/upload/InfoBanner/zyjiaocheng/191/1b88b5182508499a8e9f03dfbf20e171.jpg)
PHP发送AT指令,phpat指令
需求: 发送短信到用户输入手机, 要求可以自定义信息内容
问题: 没有电信猫, 使用免费api接口无法自定义短信内容
解决方案: 通过4G网卡, 接在服务器上, 通过AT指令操作网卡, 发送短信
查阅发现, AT质量发送需要对信息进行多重编码, 而且发送超时, 但实际发送成功, 问题还未完全解决
代码如下:
1 <?php 2 send_message('8613800138000', '您好, 你正在申请注册服务平台, 您的验证码是: 97431'); 3 4 function send_message($phone, $message) { 5 $phone = decode_phone($phone); 6 7 $message_center = decode_message_center('+8613010200500'); //此步骤似乎没用 8 9 $message = decode_message($message); 10 11 $length = get_message_length($phone, $message); 12 13 set_time_limit(0); 14 15 //根据情况选择COM口, 此处为COM4, 在管理设备中, 查看网络解调器的COM口 16 17 exec('mode COM4: baud=115200 data=8 stop=1 parity=n xon=on'); 18 19 $fd = dio_open('COM4:', O_RDWR); 20 21 $ff = dio_stat($fd); 22 23 if (!$fd) { 24 die("failed open com4"); 25 } 26 27 //chr(13)是回车, chr(16)是Ctrl+Z 28 29 dio_write($fd, "AT+CMGF=0" . chr(13)); //设置发送模式为PDU 30 31 dio_write($fd, "AT+CMGS=" . $length . chr(13)); //发送信息长度 32 33 dio_write($fd, '11000D91' . $phone . '000800' . $message . chr(26) . chr(13)); //发送短信息 34 35 sleep(2); 36 37 dio_close($fd); 38 } 39 40 function decode_phone($phone) { 41 $phone = str_replace('+', '', $phone); 42 43 if (strlen($phone) % 2 !== 0) { 44 $phone = $phone . 'F'; 45 } 46 47 $newPhone = ''; 48 for ($i = 0; $i < strlen($phone); $i += 2) { 49 $newPhone = $newPhone . substr($phone, $i + 1, 1) . substr($phone, $i, 1); 50 } 51 52 return $newPhone; 53 } 54 55 function decode_message_center($phone) { 56 $newPhone = '91' . decode_phone($phone); 57 58 $len = strtoupper(dechex(strlen($newPhone) / 2)); 59 60 if (strlen($len) % 2 !== 0) { 61 $len = '0' . $len; 62 } 63 64 $newPhone = $len . $newPhone; 65 66 return $newPhone; 67 } 68 69 function decode_message($message) { 70 $newMessage = utf8_unicode($message); 71 72 $len = strtoupper(dechex(strlen($newMessage) / 2)); 73 74 if (strlen($len) % 2 !== 0) { 75 $len = '0' . $len; 76 } 77 78 $newMessage = $len . $newMessage; 79 80 return $newMessage; 81 } 82 83 function utf8_unicode($name) { 84 $name = iconv('UTF-8', 'UCS-2', $name); 85 $len = strlen($name); 86 $str = ''; 87 88 for ($i = 0; $i < $len - 1; $i = $i + 2) { 89 $c = $name[$i]; 90 $c2 = $name[$i + 1]; 91 if (ord($c) > 0) { //两个字节的文字 92 $str .= base_convert(ord($c), 10, 16) . str_pad(base_convert(ord($c2), 10, 16), 2, 0, STR_PAD_LEFT); 93 } else { 94 $str .= str_pad(base_convert(ord($c2), 10, 16), 4, 0, STR_PAD_LEFT); 95 } 96 } 97 98 $str = strtoupper($str); //转换为大写 99 return $str; 100 } 101 102 function get_message_length($phone, $message) { 103 $str = '11000D91' . $phone . '000800' . $message; 104 105 $length = strlen($str) / 2; 106 107 if ($length < 10) { 108 $length = '0' . $length; 109 } 110 111 return $length; 112 }
http://www.bkjia.com/PHPjc/1129314.htmlwww.bkjia.comtruehttp://www.bkjia.com/PHPjc/1129314.htmlTechArticlePHP发送AT指令,phpat指令 需求: 发送短信到用户输入手机, 要求可以自定义信息内容 问题: 没有电信猫, 使用免费api接口无法自定义短信内容...
内容总结
以上是互联网集市为您收集整理的PHP发送AT指令,phpat指令_PHP教程全部内容,希望文章能够帮你解决PHP发送AT指令,phpat指令_PHP教程所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。