前提是在后台开启手机注册功能:具体是在设置-》账号同步-》手机短信 里开启。
修改 siteroot\core\framework\libraries\sms.php
修改 siteroot\shop\control\connect_sms.php
会员注册界面,手机注册
siteroot\wap\tmpl\member\register_mobile.html
数据库 mobile_host_type 类型为 3 在 setting 表中,如果cache中有数据,把相应的值也改了!
修改 siteroot\data\logic\connect_api.logic.php
下面正式进入修改步骤:
1,修改sms.php 添加如下代码:
<?php
/**
* 手机短信类
*
*
*
* @package library* www.33hao.com好商城V3为你提供售后服务 以便你更好的了解
*/
defined('InShopNC') or exit('Access Invalid!'); class Sms {
/*
* 发送手机短信
* @param unknown $mobile 手机号
* @param unknown $content 短信内容
*/
public function send($mobile,$content) {
$mobile_host_type=C('mobile_host_type');
if($mobile_host_type==1)
{
return $this->mysend_smsbao($mobile,$content);
}
if($mobile_host_type==2)
{
return $this->mysend_yunpian($mobile,$content);
}
if($mobile_host_type==3)
{
return $this->mysend_c123($mobile,$content);
} }
/*
您于{$send_time}绑定手机号,验证码是:{$verify_code}。【{$site_name}】
0 提交成功
30:密码错误
40:账号不存在
41:余额不足
42:帐号过期
43:IP地址限制
50:内容含有敏感词
51:手机号码不正确
http://api.smsbao.com/sms?u=USERNAME&p=PASSWORD&m=PHONE&c=CONTENT
*/
private function mysend_smsbao($mobile,$content){ $user_id = urlencode(C('mobile_username')); // 这里填写用户名
$pass = urlencode(C('mobile_pwd')); // 这里填登陆密码
if(!$mobile || !$content || !$user_id || !$pass) return false;
if(is_array($mobile)) $mobile = implode(",",$mobile);
$mobile=urlencode($mobile);
//$content=$content."【我的网站】";
$content=urlencode($content);
$pass =md5($pass);//MD5加密
$url="http://api.smsbao.com/sms?u=".$user_id."&p=".$pass."&m=".$mobile."&c=".$content."";
$res = file_get_contents($url);
//return $res;
$ok=$res=="0";
if($ok)
{
return true;
}
return false; } /*--------------------------------
程序版权:上海创明信息技有限公司
服务热线:4008885262
技术 QQ:2355373292
修改时间:2013-08-18
程序功能:创明网PHP接口示例 通过接口进行单发、群发;
说明: http://dxhttp.c123.cn/tx/?uid=用户账号&pwd=MD5位32密码&mobile=号码&content=内容
状态:
100 发送成功
101 验证失败
102 短信不足
103 操作失败
104 非法字符
105 内容过多
106 号码过多
107 频率过快
108 号码内容空
109 账号冻结
110 禁止频繁单条发送
111 系统暂定发送
112 号码不正确
113 定时时间格式不对
114 账号被锁,10分钟后登录
115 连接失败
116 禁止接口发送
117 绑定IP不正确
120 系统升级
--------------------------------*/
private function mysend_c123($mobile,$content){
$url='http://dxhttp.c123.cn/tx/';
$uid = '500000'; //用户账号
$pwd = '1231321'; //密码
$_mobile = $mobile; //号码,多个号码用逗号隔开
$_content = $content; //内容
$time=''; //发送时间
$mid=''; //可选项,根据用户账号是否支持扩展
//即时发送
return $this->sendSMS($url,$uid,$pwd,$_mobile,$_content); }
private function sendSMS($url,$uid,$pwd,$mobile,$content,$time='',$mid='')
{
$data = array
(
'uid'=>$uid, //用户账号
'pwd'=>strtolower(md5($pwd)), //MD5位32密码
'mobile'=>$mobile, //号码
'content'=>$content, //如果页面是gbk编码,则转成utf-8编码,如果是页面是utf-8编码,则不需要转码
'time'=>$time, //定时发送
'mid'=>$mid //子扩展号
);
// var_dump($data);
$re= $this->postSMS($url,$data); //POST方式提交
if(trim($re) == '100' )
{
echo "发送成功!";
return true;
}
else
{
echo "发送失败! 状态:".$re;
return false;
}
} private function postSMS($url,$data='')
{
$row = parse_url($url);
$host = $row['host'];
$port = $row['port'] ? $row['port']:80;
$file = $row['path'];
while (list($k,$v) = each($data))
{
$post .= rawurlencode($k)."=".rawurlencode($v)."&"; //转URL标准码
}
$post = substr( $post , 0 , -1 );
$len = strlen($post);
$fp = @fsockopen( $host ,$port, $errno, $errstr, 10);
if (!$fp) {
return "$errstr ($errno)\n";
} else {
$receive = '';
$out = "POST $file HTTP/1.0\r\n";
$out .= "Host: $host\r\n";
$out .= "Content-type: application/x-www-form-urlencoded\r\n";
$out .= "Connection: Close\r\n";
$out .= "Content-Length: $len\r\n\r\n";
$out .= $post;
fwrite($fp, $out);
while (!feof($fp)) {
$receive .= fgets($fp, 128);
}
fclose($fp);
$receive = explode("\r\n\r\n",$receive);
unset($receive[0]);
return implode("",$receive);
}
} /**
* http://www.yunpian.com/
* 发送手机短信
* @param unknown $mobile 手机号
* @param unknown $content 短信内容
0 OK 调用成功,该值为null 无需处理
1 请求参数缺失 补充必须传入的参数 开发者
2 请求参数格式错误 按提示修改参数值的格式 开发者
3 账户余额不足 账户需要充值,请充值后重试 开发者
4 关键词屏蔽 关键词屏蔽,修改关键词后重试 开发者
5 未找到对应id的模板 模板id不存在或者已经删除 开发者
6 添加模板失败 模板有一定的规范,按失败提示修改 开发者
7 模板不可用 审核状态的模板和审核未通过的模板不可用 开发者
8 同一手机号30秒内重复提交相同的内容 请检查是否同一手机号在30秒内重复提交相同的内容 开发者
9 同一手机号5分钟内重复提交相同的内容超过3次 为避免重复发送骚扰用户,同一手机号5分钟内相同内容最多允许发3次 开发者
10 手机号黑名单过滤 手机号在黑名单列表中(你可以把不想发送的手机号添加到黑名单列表) 开发者
11 接口不支持GET方式调用 接口不支持GET方式调用,请按提示或者文档说明的方法调用,一般为POST 开发者
12 接口不支持POST方式调用 接口不支持POST方式调用,请按提示或者文档说明的方法调用,一般为GET 开发者
13 营销短信暂停发送 由于运营商管制,营销短信暂时不能发送 开发者
14 解码失败 请确认内容编码是否设置正确 开发者
15 签名不匹配 短信签名与预设的固定签名不匹配 开发者
16 签名格式不正确 短信内容不能包含多个签名【 】符号 开发者
17 24小时内同一手机号发送次数超过限制 请检查程序是否有异常或者系统是否被恶意攻击 开发者
-1 非法的apikey apikey不正确或没有授权 开发者
-2 API没有权限 用户没有对应的API权限 开发者
-3 IP没有权限 访问IP不在白名单之内,可在后台"账户设置->IP白名单设置"里添加该IP 开发者
-4 访问次数超限 调整访问频率或者申请更高的调用量 开发者
-5 访问频率超限 短期内访问过于频繁,请降低访问频率 开发者
-50 未知异常 系统出现未知的异常情况 技术支持
-51 系统繁忙 系统繁忙,请稍后重试 技术支持
-52 充值失败 充值时系统出错 技术支持
-53 提交短信失败 提交短信时系统出错 技术支持
-54 记录已存在 常见于插入键值已存在的记录 技术支持
-55 记录不存在 没有找到预期中的数据 技术支持
-57 用户开通过固定签名功能,但签名未设置 联系客服或技术支持设置固定签名 技术支持
*/
private function mysend_yunpian($mobile,$content) {
$yunpian='yunpian';
$plugin = str_replace('\\', '', str_replace('/', '', str_replace('.', '',$yunpian)));
if (!empty($plugin)) {
define('PLUGIN_ROOT', BASE_DATA_PATH . DS .'api/smsapi');
require_once(PLUGIN_ROOT . DS . $plugin . DS . 'Send.php');
return send_sms($content, $mobile);
}
else
{
return false;
}
} }
修改sms.php后
2,修改配置信息
将短信平台的用户,密码配置好,注意首次使用一定要在”接口密码“处,配置好密码。和登录密码不一样。
注意:如果网页是gbk模式,要转码成utf-8格式。
3,如果上一步配置成功了,则可以正常收到短信了。收到短信后填入验证码,下一步设置密码;
4,设置密码点完成,返回{state: 1, username: "phone_155xxxxxxxx", key: "", error: 1}
5,根据这个返回值,跳转登录后成的页面。siteroot\mobile\control\connect.php
修改手机注册里的$state_data['error']=$state_data['state']为$state_data['error']!=$state_data['state'];