❶ php如何调用api接口,主要是php调用联通,移动api进行短信的发送
你没法调移动。联通api的,如果要进行短信发送,可以去找短信接口,一般去运营商购买,然后他们提供api。然后用php对接即可,很简单,比如下面使用的就是某家的api发送:
$this->content = “发送内容”;
$this->name = "短信账号";
$this->pwd= "短信密码";
$this->mobile = "发送的手机号";
$argv = array(
'name'=>$this->name, //必填参数。用户账号
'pwd'=>$this->pwd, //必填参数。(web平台:基本资料中的接口密码)
'content'=>$this->content, //必填参数。发送内容(1-500 个汉字)UTF-8编码
'mobile'=>$this->mobile, //必填参数。手机号码。多个以英文逗号隔开
'stime'=>'', //可选参数。发送时间,填写时已填写的时间发送,不填时为当前时间发送
'sign'=>$this->sign, //必填参数。用户签名。
'type'=>$this->type, //必填参数。固定值 pt
'extno'=>$this->extno //可选参数,扩展码,用户定义扩展码,只能为数字
);
//构造要post的字符串
foreach ($argv as $key=>$value) {
if ($flag!=0) {
$params .= "&";
$flag = 1;
}
$params.= $key."=";
$params.= urlencode($value);
$flag = 1;
}
$url = "http://xxxxxxx.com?".$params; //提交的url
$resultUrl = file_get_contents($url);//获取发送状态
❷ php ci框架怎么对接短信接口
相当简单 这个接口调用就是封装一个curl请求的function (sendSMS),代码示例网站上已经有了,使用时:加载这个function, 然后 调用方法sendSMS;
我把源码给你贴一遍,这个里面的账号密码是需要你们自己去申请的;
<?
$username='test';//用户账号
$password='123456';//密码
$mobile='13811299934,18610310066,15210954922';//号手机码
$content='您的短信验证码是:ABCD';//内容
//即时发送
$result=sendSMS($username,$password,$mobile,$content);
echo$result;
functionsendSMS($username,$password,$mobile,$content)
{
$url='http://域名/api/sms.php';
$data=array
(
'username'=>$username,//用户账号
'password'=>$password,//密码
'mobile'=>$mobile,//号码
'content'=>$content,//内容
);
$result=curlSMS($url,$data);//POST方式提交
return$result;
}
functioncurlSMS($url,$post_fields=array()){
$ch=curl_init();
curl_setopt($ch,CURLOPT_URL,$url);
curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);
curl_setopt($ch,CURLOPT_TIMEOUT,3600);//60秒
curl_setopt($ch,CURLOPT_HEADER,1);
curl_setopt($ch,CURLOPT_REFERER,'http://www.yourdomain.com');
curl_setopt($ch,CURLOPT_POST,1);
curl_setopt($ch,CURLOPT_POSTFIELDS,$post_fields);
$data=curl_exec($ch);
curl_close($ch);
$res=explode(" ",$data);
return$res[2];
}
?>
❸ 谁能帮我写一个PHP的短信验证例程,
<?php
/**
*
* User: shikiliu
* Date: 13-7-11
*/
class TelephoneCheck
{
/**
* 取得某个用户某次活动的手机验证码
* @param $uin 用户ID 小于10000系统保留
* @param $actId 活动ID 小于1000系统保留
* @param $telephone 用户手机号
* @return bool|int 4位数的验证码
*/
public function getTelephoneCode($uin, $actId, $telephone)
{
if ($uin < 10000 || $actId < 1000 || empty($telephone)) {
return false;
}
$time = time();
$timeFeature = hexdec(substr(md5($time), 0, 3)) & 0x1F1;
$telephoneFeature = hexdec(substr(md5($telephone), 8, 4));
$actIdFeature = hexdec(substr(md5($actId), 16, 4));
$uinFeature = hexdec(substr(md5($uin), 24, 4));
$sumFeature = $telephoneFeature + $actIdFeature + $uinFeature;
$sumFeature = $sumFeature % 10000;
if ($sumFeature < 1000) {
$sumFeature = 5145;
}
$result = $sumFeature | $timeFeature;
return $result;
}
/**
* 验证用户的手机验证码
* @param $uin 用户ID 小于10000系统保留
* @param $actId 活动ID 小于1000系统保留
* @param $telephone 用户手机号
* @param $code getTelephoneCode生成的验证码
* @return bool 是否正确
*/
public function checkTelephoneCode($uin, $actId, $telephone, $code)
{
if ($uin < 10000 || $actId < 1000 || empty($telephone) || empty($code)) {
return false;
}
$telephoneFeature = hexdec(substr(md5($telephone), 8, 4));
$actIdFeature = hexdec(substr(md5($actId), 16, 4));
$uinFeature = hexdec(substr(md5($uin), 24, 4));
$sumFeature = $telephoneFeature + $actIdFeature + $uinFeature;
$sumFeature = $sumFeature % 10000;
if ($sumFeature < 1000) {
$sumFeature = 5145;
}
$sumFeature = $sumFeature & 0xE0E;
$code = $code & 0xE0E;
if ($sumFeature == $code) {
return true;
}
return false;
}
}
$actId = 10001;
$telephone = 13797025562;
$uin = 514540767;
$telCode = new TelephoneCheck();
$code = $telCode->getTelephoneCode($uin, $actId, $telephone);
var_mp($code);
var_mp($telCode->checkTelephoneCode($uin, $actId, $telephone, $code));
var_mp($telCode->checkTelephoneCode($uin, $actId, $telephone, $code+10));
❹ 我有移动提供的短信接口,请问怎么用php调用这些接口发送短信呢
移动的接口是什么风格的?是soap的还是自定义的?
调用自定义接口通常有以下步骤:
1、阅读接口文档
2、数据接口一般会提供一些参数。如果是GET接口,请将参数拼接在地址的后面(推荐使用
http_build_query)。如果是POST接口,看我的示例代码。
3、请求数据
4、解析返回的内容,判断调用是否成功。一般返回的内容有xml和json格式。
给你一个CURL调用POST接口的例子:
<?php
$ch=curl_init('省略接口地址,防止屏蔽');
//以下选项设为true,否则接口返回的内容会直接打印在页面上
curl_setopt($ch,CURLOPT_RETURNTRANSFER,true);
//连接超时,一定要设置
curl_setopt($ch,CURLOPT_CONNECTTIMEOUT,5);
//连接成功后,请求超时,一定要设置
curl_setopt($ch,CURLOPT_TIMEOUT,5);
//使用POST请求
curl_setopt($ch,CURLOPT_POST,1);
//将参数POST过去,$post_data是你的参数组成的关联数组
curl_setopt($ch,CURLOPT_POSTFIELDS,$post_data);
//提交请求,得到反馈
$response=curl_exec($ch);
//解析反馈的内容,略
如果是SOAP风格的,请查阅PHP文档SoapClient类的用法。因为Soap规范不统一,使用其他语言实现的Soap可能和PHP不兼容。
以前我使用过移动梦网的接口(不是移动的接口),它提供两种风格的API。它的Soap就和PHP不兼容。所以我选择了自定义风格的API。
❺ 求微信公众号接口 给客户发送信息的 PHP代码
你好,可以用客服消息接口或模板消息接口实现。但是需要认证公众号才能有权限。
认证服务号可以发送客服接口消息[需要对应openid24小时内有互动]和模板消息,订阅号则没有模板消息权限。
发送文字消息示例:
$postdata='{"touser":"o5BkRs_vRwfPqAb1ceXHfJDzmQ5o","msgtype":"text","text":{"content":"HelloWorld"}}';
$opts=array(
'http'=>array(
'method'=>'POST',
'Content-Length'=>strlen($postdata),
'Host'=>'api.weixin.qq.com',
'Content-Type'=>'application/json',
'content'=>$postdata
)
);
$context=stream_context_create($opts);
$result=file_get_contents('https://api.weixin.qq.com/cgi-bin/message/custom/send?access_token=你的access_token',true,$context);
echo$result;
❻ PHP+MYSQL 实现队列 进行发送短信怎么做
最近遇到一个批量发送短信的需求,短信接口是第三方提供的。刚开始想到,获取到手机号之后,循环调用接口发送不就可以了吗?
但很快发现问题:当短信数量很大时,不仅耗时,而且成功率很低。
于是想到,用PHP和MySQL实现一个消息队列,一条一条的发送短信。下面介绍具体的实现方法:
首先,建立一个数据表sms,包含以下字段:
id,
phone, //手机号
content //短信内容
将需要发送的短信和手机号存入sms表中。
接下来,需要用PHP实现一个定时器,定时读取一条记录,并发送短信:
<?php
$db = new Db();
$sms = new Sms();
while(true){
$item = $db->getFirstRecord(); //获取数据表第一条记录
if(!$item){
//如果队列中没有数据,则结束定时器
break;
}
$res = $sms->send($item['phone'],$item['content']); //发送短信
if($res){
$db->deleteFristRecord(); //删除发送成功的记录
echo $item['phone'].'发送成功';
}else{
echo $item['phone'].'发送失败,稍后继续尝试';
}
sleep(10); //每隔十秒循环一次
}
echo '发送完毕!';
?>
将代码保存为timer_sms.php,打开命令行,执行定时器:
php timer_sms.php
好了,php定时器将会根据设定的时间间隔(这里设的是10秒),自动完成发送短信的任务。任务完成后将自动退出定时器,不再占用服务器资源。
根据我的测试,PHP定时器占用资源并不多,不会对服务器造成压力。而且是异步访问数据库,也不会影响数据库的运行。
这种方式的优点是:
1、后台运行,前台无需等待
2、成功率高,失败的记录会自动重发,直到成功
❼ PHP如何定时发送短信
1、首先设置好服务器;
2、设置执行时间为无限制;
3、设置发送短信间隔为5分钟;
4、打开存储短信的文件,进行短信操作,关闭文件;
5、循环上面的过程;
6、具体设置代码如下:
ignore_user_abort();//即使Client断开(如关掉浏览器),PHP脚本也可以继续执行.
set_time_limit(0);//执行时间为无限制,php默认的执行时间是30秒,通过set_time_limit(0)可以让程序无限制的执行下去
$interval=60*5;//每隔5分钟运行
do{
$fp=fopen('test.txt','a');
fwrite($fp,'test');
fclose($fp);
sleep($interval);//等待5分钟
}while(true);
?>