某些版本的云购系统在接入互亿无线短信插件的时候,偶尔会出现短信提交不成功的情况,本文系统了修复该问题的方法:
修改前请一定注意先备份代码
一、修复注册时手机第二次获取验证码无效的bug 找到云购系统的 \system\modules\member\user.action.php 文件并找到代码 - if(!$member)_message("未知的来源!",WEB_PATH.'/register');
复制代码在代码后台加入下面的代码 - $mobilecode_arr = explode("|",$member['mobilecode']);
- if((time()-$mobilecode_arr[1])>120){
- $member['mobilecode'] = '-1';
- }
复制代码
二、在云购系统中增加找回密码手机验证的功能 1.执行sql - INSERT INTO `yungo`.`go_caches` (
- `id` ,
- `key` ,
- `value`
- )
- VALUES (
- NULL , 'template_mobile_find', '您好,您现在正在找回密码,您的验证码是000000');
复制代码
2.修改文件\system\funcs\send.fun.php 找到代码 - function send_email_reg($email=null,$uid=null){在代码前加入下面的代码
- /**
- *发送手机找回密码短信
- *mobile @用户手机号
- * uid @用户的ID
- *code @中奖码
- */
- function send_mobile_shop_find($mobile=null,$mobile_code=null){
- if(!$mobile_code)_message("发送手机找回密码短信,随机码不能为空!");
- if(!$mobile)_message("发送手机找回密码短信,手机号码不能为空!");
- $db=System::load_sys_class('model');
- $template = $db->GetOne("select * from `@#_caches` where `key` = 'template_mobile_find'");
- if(!$template){
- $template = array();
- $content = "您好,您现在正在找回密码,您的验证码是".$mobile_code;
- }
- if(empty($template['value'])){
- $content = "您好,您现在正在找回密码,您的验证码是".$mobile_cod;
- }else{
- if(strpos($template['value'],"000000") == true){
- $content= str_ireplace("000000",$code,$template['value']);
- }else{
- $content = $template['value'].$code;
- }
- }
- return _sendmobile($mobile,$content);
- }
复制代码
3.修改文件\system\modules\member\finduser.action.php 找到代码_sendmobile改成send_mobile_shop_find(共有两处)
4.修改文件\system\modules\member\finduser.action.php 找到代码System::load_app_fun('my','go');在代码后面加入System::load_sys_fun('send');
5.修改文件\system\modules\member\finduser.action.php 找到代码 - if($member['passcode']==-1){在代码前面加入下面的代码
- $passcode_arr = explode("|",$member['passcode']);
- if((time()-$passcode_arr[1])>120){
- $member['passcode'] = '-1';
- }
复制代码
6.修改文件\system\modules\admin\tpl\template.mobile.tpl.php 加入下面的代码 - <tr>
- <td width="150">用户找回密码短信模板:</td>
- <td><textarea name="m_find_temp" style=" height:50px; width:450px" class="input-text"><?php echo $temp_find['value']; ?></textarea>
- <font color="red">000000</font> 是发送的验证码!,请不要超过65个字,超过按照2条短信发送
- </td>
- </tr>
复制代码
7.修改文件\system\modules\admin\template.action.php 中的mobile_temp函数中加入下面的代码 - /*找回密码*/
- $temp_find = $this->db->GetOne("select value from `@#_caches` where `key` = 'template_mobile_find' LIMIT 1");
- $m_find_temp = $_POST['$m_find_temp'];
- preg_match_all("/./us", $m_find_temp, $match_find);
- if(count($match_find[0]) >=75){
- _message("找回密码短信模板不能超过75个字,请检查!");
- }
- $q_3 = $this->db->Query("UPDATE `@#_caches` SET `value`='$_POST[m_find_temp]' WHERE (`key`='template_mobile_find')");
复制代码
8.修改文件\system\modules\admin\template.action.php 修改代码if($q_1 && $q_2){ 改成 {if($q_1 && $q_2 && $q_3){
|