有用php做过短信的朋友吗? 不知道php的socket可以吗?asp用winsock可以,用ip和端口传送特定格式数据. 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 有两种方式,至于短信接口商(比如移动,以及其他使用移动接口的公司)给你开放哪种接口就不一定了第一种是http方式第二种是socket方式第一种一般使用get方式传送信息到短信接口服务器,比如http://接口服务器:port/?参数名=****等因为短信内容不允许超过70个汉字,所以get方式足够使用了第二种只是使用socket方式连接而已,而其他参数跟get方式没啥区别 那 这主要用到php的哪方面知识呢,大体的方法是怎么样的呢 第一种方法$fp = fopen("http://url:port/?spid=80889&password=123456..........一系列参数", "r");第二种方法$fp = fsockopen($url, $port);$request="spid=80889";//发送内容fputs($fp, $request);while (!feof ($fp)){ $tmp .= fgets($fp, 4096); //接收信息} if($tmp=="ok"){$request="password=123456";//发送内容fputs($fp, $request);$tmp=="";while (!feof ($fp)){ $tmp .= fgets($fp, 4096); //接收信息} }........fclose($fp);使用类似的这种方法就可以了 具体流程,每个提供商都可能不一样只要记住一点,只要把参数提交到接口服务器,其他的你都不用考虑有一个流程是共同的就是,你把参数信息提交到服务器后,服务器同样采用两种方式中的一种方式,把信息返回给你比如,你事先告诉服务商,给你提交是否正确发送短信的报告地址,http://自己的网站地址/文件名那么你每次向服务器提交信息,他们处理完你的信息之后,就会执行你告诉他们的地址,以方便让你知道短信是否正常发送,当然,你也可以使用指定端口用socket方式进行要求报告 同时,对客户的收费是联通 或 移动来扣的,那么 这一部分钱 他们会留下一部分吧, qingxia(青虾) 大哥,剧你了解的情况来看,网络短信的前途又如何呢,谢谢你的回复 qingxia(青虾) 大哥有没有关于 php socket方面的资料呢,让小弟参考参考,谢谢 你所指的用PHP做是什么意思?用PHP开发接口?(如果是这种想法请你赶快撤销!太慢~还麻烦~而且占用资源比较多!)你要是用PHP想来实现开展业务的话~我可以告诉你那是可以的!但是你必需得对MYSQL+PHP得熟 php的socket很简单的,基本没几个语句上面我贴的代码,就足够用了 我以前根据提供商做的.可以参考一下.主要是socket的读取 $smsUID="xxx"; //短信网关分配给你的用户名和密码 $smsPWD="SMS"; $smsSocket="192.168.1.1"; //短信网关的IP 211.151.90.7 $smsPost=1081; //短信网关的端口 $fp=@fsockopen($smsSocket,$smsPost,&$errno, &$errstr, $smsTimeout); if(!$fp) { echo "<font color=#ff0000><b>连接失败,请查看是否正确连接到网络!</b></font>"; //连接失败 } else { //登录到短信中心服务器 fputs($fp,"login\n"); fputs($fp,$smsUID."\n"); fputs($fp,$smsPWD."\n"); fputs($fp,"\n"); $MessageContent=trim($_POST["MessageContent"]); $MobileNo=trim($_POST["MobileNo"]); $ServiceType="MFFW"; //计费代码 3 TP 0.5 按条收费 $Priority="0"; //发送优先级 $AgentFlag="0"; //代收费标志 $MoFlag="2"; //点播号 $ExpireTime=""; //短信失效时间 $ScheduleTime=""; //定时发送时间 $ReportFlag="1"; //状态报告 $status="255"; //都要返回状态报告 $MessageType="TEXT"; //短信类型 文本信息 $FreeTerminalNo=$MobileNo; //记费手机号码 $TargetTerminalNo=$MobileNo; //接收方手机号码 $SourceTerminalNo=$MobileNo; //发送方手机号码 $MessageId="123";print(fget($fp,4096));print(fget($fp,4096)); fputs($fp,"submit"."\n"); fputs($fp,$MessageId."\n"); fputs($fp,$FreeTerminalNo."\n"); fputs($fp,$SourceTerminalNo."\n"); fputs($fp,$TargetTerminalNo."\n"); fputs($fp,$ServiceType."\n"); fputs($fp,$MoFlag."\n"); fputs($fp,$ReportFlag."\n"); fputs($fp,$ExpireTime."\n"); fputs($fp,$ScheduleTime."\n"); fputs($fp,$MessageType."\n"); $MessageContent=str_replace("\r","",str_replace("\n","",$MessageContent)); //不能有回车 fputs($fp,$MessageContent."\n"); fputs($fp,"\n"); print("<br>发送成功!<br>".$MobileNo." : ".$MessageContent); fclose($fp); } 关于查询mysql字段并输出 刚刚学习php,那位高手可以给个利用php实现链表和二叉树的代码 我想让我的任可页面不被任何搜索引擎收录应该怎么写robots.txt 这个功能在php中如何实现? 高分求phplib template和smarty的使用手册? 拜托!帮帮忙!在线等待!!急...! 怎么判断该ip地址是属于哪个地域的,比如哪个国家,哪个省份等?急 怎么用php读jsp的session呢? 怎么样写程序直接显示当前目录下的图片的缩略图? 请帮忙写个伪静态的RewriteRule 关于echo的 关于echo
第一种是http方式
第二种是socket方式
第一种一般使用get方式传送信息到短信接口服务器,比如http://接口服务器:port/?参数名=****等
因为短信内容不允许超过70个汉字,所以get方式足够使用了
第二种只是使用socket方式连接而已,而其他参数跟get方式没啥区别
$fp = fopen("http://url:port/?spid=80889&password=123456..........一系列参数", "r");
第二种方法
$fp = fsockopen($url, $port);
$request="spid=80889";//发送内容
fputs($fp, $request);
while (!feof ($fp))
{
$tmp .= fgets($fp, 4096); //接收信息
}
if($tmp=="ok")
{
$request="password=123456";//发送内容
fputs($fp, $request);
$tmp=="";
while (!feof ($fp))
{
$tmp .= fgets($fp, 4096); //接收信息
}
}
...
.....
fclose($fp);使用类似的这种方法就可以了
只要记住一点,只要把参数提交到接口服务器,其他的你都不用考虑
有一个流程是共同的
就是,你把参数信息提交到服务器后,服务器同样采用两种方式中的一种方式,把信息返回给你
比如,你事先告诉服务商,给你提交是否正确发送短信的报告地址,http://自己的网站地址/文件名
那么你每次向服务器提交信息,他们处理完你的信息之后,就会执行你告诉他们的地址,以方便让你知道短信是否正常发送,当然,你也可以使用指定端口用socket方式进行要求报告
上面我贴的代码,就足够用了
$smsUID="xxx"; //短信网关分配给你的用户名和密码
$smsPWD="SMS";
$smsSocket="192.168.1.1"; //短信网关的IP 211.151.90.7
$smsPost=1081; //短信网关的端口
$fp=@fsockopen($smsSocket,$smsPost,&$errno, &$errstr, $smsTimeout);
if(!$fp)
{
echo "<font color=#ff0000><b>连接失败,请查看是否正确连接到网络!</b></font>"; //连接失败
}
else
{
//登录到短信中心服务器
fputs($fp,"login\n");
fputs($fp,$smsUID."\n");
fputs($fp,$smsPWD."\n");
fputs($fp,"\n");
$MessageContent=trim($_POST["MessageContent"]);
$MobileNo=trim($_POST["MobileNo"]); $ServiceType="MFFW"; //计费代码 3 TP 0.5 按条收费
$Priority="0"; //发送优先级
$AgentFlag="0"; //代收费标志
$MoFlag="2"; //点播号
$ExpireTime=""; //短信失效时间
$ScheduleTime=""; //定时发送时间
$ReportFlag="1"; //状态报告
$status="255"; //都要返回状态报告
$MessageType="TEXT"; //短信类型 文本信息
$FreeTerminalNo=$MobileNo; //记费手机号码
$TargetTerminalNo=$MobileNo; //接收方手机号码
$SourceTerminalNo=$MobileNo; //发送方手机号码
$MessageId="123";
print(fget($fp,4096));
print(fget($fp,4096));
fputs($fp,"submit"."\n");
fputs($fp,$MessageId."\n");
fputs($fp,$FreeTerminalNo."\n");
fputs($fp,$SourceTerminalNo."\n");
fputs($fp,$TargetTerminalNo."\n");
fputs($fp,$ServiceType."\n");
fputs($fp,$MoFlag."\n");
fputs($fp,$ReportFlag."\n");
fputs($fp,$ExpireTime."\n");
fputs($fp,$ScheduleTime."\n");
fputs($fp,$MessageType."\n");
$MessageContent=str_replace("\r","",str_replace("\n","",$MessageContent)); //不能有回车
fputs($fp,$MessageContent."\n");
fputs($fp,"\n"); print("<br>发送成功!<br>".$MobileNo." : ".$MessageContent);
fclose($fp);
}