PHP发送AT指令实例代码

需求: 发送短信到用户输入手机, 要求可以自定义信息内容

问题: 没有电信猫, 使用免费api接口无法自定义短信内容

解决方案: 通过4G网卡, 接在服务器上, 通过AT指令操作网卡, 发送短信

查阅发现, AT质量发送需要对信息进行多重编码, 而且发送超时, 但实际发送成功, 问题还未完全解决

代码如下:

<?php send_message('', '您好, 你正在申请注册服务平台, 您的验证码是: '); function send_message($phone, $message) { $phone = decode_phone($phone); $message_center = decode_message_center('+'); //此步骤似乎没用 $message = decode_message($message); $length = get_message_length($phone, $message); set_time_limit(); //根据情况选择COM口, 此处为COM, 在管理设备中, 查看网络解调器的COM口 exec('mode COM: baud= data= stop= parity=n xon=on'); $fd = dio_open('COM:', O_RDWR); $ff = dio_stat($fd); if (!$fd) { die("failed open com"); } //chr()是回车, chr()是Ctrl+Z dio_write($fd, "AT+CMGF=" . chr()); //设置发送模式为PDU dio_write($fd, "AT+CMGS=" . $length . chr()); //发送信息长度 dio_write($fd, 'D' . $phone . '' . $message . chr() . chr()); //发送短信息 sleep(); dio_close($fd); } function decode_phone($phone) { $phone = str_replace('+', '', $phone); if (strlen($phone) % !== ) { $phone = $phone . 'F'; } $newPhone = ''; for ($i = ; $i < strlen($phone); $i += ) { $newPhone = $newPhone . substr($phone, $i + , ) . substr($phone, $i, ); } return $newPhone; } function decode_message_center($phone) { $newPhone = '' . decode_phone($phone); $len = strtoupper(dechex(strlen($newPhone) / )); if (strlen($len) % !== ) { $len = '' . $len; } $newPhone = $len . $newPhone; return $newPhone; } function decode_message($message) { $newMessage = utf_unicode($message); $len = strtoupper(dechex(strlen($newMessage) / )); if (strlen($len) % !== ) { $len = '' . $len; } $newMessage = $len . $newMessage; return $newMessage; } function utf_unicode($name) { $name = iconv('UTF-', 'UCS-', $name); $len = strlen($name); $str = ''; for ($i = ; $i < $len - ; $i = $i + ) { $c = $name[$i]; $c = $name[$i + ]; if (ord($c) > ) { //两个字节的文字 $str .= base_convert(ord($c), , ) . str_pad(base_convert(ord($c), , ), , , STR_PAD_LEFT); } else { $str .= str_pad(base_convert(ord($c), , ), , , STR_PAD_LEFT); } } $str = strtoupper($str); //转换为大写 return $str; } function get_message_length($phone, $message) { $str = 'D' . $phone . '' . $message; $length = strlen($str) / ; if ($length < ) { $length = '' . $length; } return $length; }

以上所述是小编给大家介绍的PHP发送AT指令实例代码 ,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对脚本之家网站的支持!

时间: 2024-08-01 10:20:05

PHP发送AT指令实例代码的相关文章

Javascript发送AJAX请求实例代码_javascript技巧

一个对AJAX的封装 //url就是请求的地址 //successFunc就是一个请求返回成功之后的一个function,有一个参数,参数就是服务器返回的报文体 function ajax(url,successFunc) { var xhr = window.XMLHttpRequest ? new XMLHttpRequest() : new ActiveXObject('Microsoft.XMLHTTP'); xhr.open("POST",url,true); xhr.onr

AngularJS基础 ng-copy 指令实例代码_AngularJS

AngularJS ng-copy 指令 AngularJS 实例 在输入框的文本被拷贝时执行表达式: <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <script src="http://apps.bdimg.com/libs/angular.js/1.4.6/angular.min.js"></script> </head&g

AngularJS 自定义指令详解及实例代码_AngularJS

AngularJS支持用户自定义标签属性,在不需要使用DOM节点操作的情况下,添加自定义的内容. 前面提到AngularJS的四大特性: 1 MVC 2 模块化 3 指令 4 双向数据绑定 下面将会介绍如下的内容: 1 如何自定义指令 2 自定义指令的使用 3 自定义指令的内嵌使用 如何自定义指令: Angular是基于模块的框架,因此上来肯定要创建一个自己的模块: var myAppModule = angular.module("myApp",[]); 然后在此模块基础上创建指令d

AngularJS 指令的交互详解及实例代码_AngularJS

背景介绍 这例子是视频中的例子,有一个动感超人,有三种能力,力量strength,速度speed,发光light. 这三种能力作为三种属性,定义动感超人作为一个标签,只要添加对应的属性就能拥有该能力. 为了便于结果的展示,为标签添加鼠标的响应事件,当鼠标移动到对应的标签上就会触发一个方法,打印出具备的能力. 程序分析 html部分的代码如下:        <div> <superman>nothing!</superman> <superman strength

Java发送带html标签内容的邮件实例代码_java

如下所示: package test; import javax.mail.internet.InternetAddress; import javax.mail.internet.MimeMessage; import javax.mail.internet.MimeUtility; import javax.mail.Session; import javax.mail.MessagingException; import javax.mail.Transport; public class

AngularJS ng-bind-html 指令详解及实例代码_AngularJS

AngularJS ng-bind-html 指令 AngularJS 实例 绑定 <p> 内的 innerHTML 到变量 myText: <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <script src="http://apps.bdimg.com/libs/angular.js/1.4.6/angular.min.js">&l

java 发送带Basic Auth认证的http post请求实例代码_java

构造http header private static final String URL = "url"; private static final String APP_KEY = "key"; private static final String SECRET_KEY = "secret"; /** * 构造Basic Auth认证头信息 * * @return */ private String getHeader() { String

php fsockopen邮箱发送实例代码

php教程 fsockopen邮箱发送实例代码 <? //ok的邮箱发送. include "smtp.class.php"; //$smtps教程erver = "smtp.163.com"; //您的smtp服务器的地址 $smtpserver="smtp.163.com"; $port =25; //smtp服务器的端口,一般是 25 $smtpuser = "你的邮箱@163.com"; //您登录smtp服务器

Android手机通过蓝牙连接佳博打印机的实例代码_Android

所使用的打印机为佳博打印机,支持蓝牙.wifi.usb我所使用的是通过蓝牙来连接. 在网上找到一个佳博官方针对安卓开发的App源码,但是各种的跳转,没有看太懂,所以又去问度娘,找到了一个不错的文章 Android对于蓝牙开发从2.0版本的sdk才开始支持,而且模拟器不支持,测试至少需要两部手机,所以制约了很多技术人员的开发. 1. 首先,要操作蓝牙,先要在AndroidManifest.xml里加入权限 // 管理蓝牙设备的权限 <uses-permissionandroid:name="