互亿无线-支持社区

标题: 一元云购系统短信发送BUG处理 [打印本页]

作者: cf_shensy    时间: 2016-1-21 13:15
标题: 一元云购系统短信发送BUG处理

某些版本的云购系统在接入互亿无线短信插件的时候,偶尔会出现短信提交不成功的情况,本文系统了修复该问题的方法:


修改前请一定注意先备份代码


一、修复注册时手机第二次获取验证码无效的bug

找到云购系统的 \system\modules\member\user.action.php 文件并找到代码

  1. if(!$member)_message("未知的来源!",WEB_PATH.'/register');
复制代码

在代码后台加入下面的代码

  1. $mobilecode_arr = explode("|",$member['mobilecode']);

  2. if((time()-$mobilecode_arr[1])>120){

  3. $member['mobilecode'] = '-1';

  4. }
复制代码

二、在云购系统中增加找回密码手机验证的功能

1.执行sql

  1. INSERT INTO  `yungo`.`go_caches` (

  2. `id` ,

  3. `key` ,

  4. `value`

  5. )

  6. VALUES (

  7. NULL ,  'template_mobile_find',  '您好,您现在正在找回密码,您的验证码是000000');
复制代码

2.修改文件\system\funcs\send.fun.php

找到代码

  1. function send_email_reg($email=null,$uid=null){在代码前加入下面的代码

  2. /**

  3. *发送手机找回密码短信

  4. *mobile @用户手机号

  5. *   uid    @用户的ID

  6. *code   @中奖码

  7. */

  8. function send_mobile_shop_find($mobile=null,$mobile_code=null){

  9. if(!$mobile_code)_message("发送手机找回密码短信,随机码不能为空!");

  10. if(!$mobile)_message("发送手机找回密码短信,手机号码不能为空!");

  11. $db=System::load_sys_class('model');

  12. $template = $db->GetOne("select * from `@#_caches` where `key` = 'template_mobile_find'");

  13. if(!$template){

  14. $template = array();

  15. $content =  "您好,您现在正在找回密码,您的验证码是".$mobile_code;

  16. }

  17. if(empty($template['value'])){

  18. $content =  "您好,您现在正在找回密码,您的验证码是".$mobile_cod;

  19. }else{

  20. if(strpos($template['value'],"000000") == true){

  21. $content= str_ireplace("000000",$code,$template['value']);

  22. }else{

  23. $content = $template['value'].$code;

  24. }

  25. }

  26. return _sendmobile($mobile,$content);

  27. }
复制代码

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

找到代码

  1. if($member['passcode']==-1){在代码前面加入下面的代码

  2. $passcode_arr = explode("|",$member['passcode']);

  3. if((time()-$passcode_arr[1])>120){

  4. $member['passcode'] = '-1';

  5. }
复制代码

6.修改文件\system\modules\admin\tpl\template.mobile.tpl.php

加入下面的代码

  1.     <tr>

  2.     <td width="150">用户找回密码短信模板:</td>

  3.    <td><textarea name="m_find_temp" style=" height:50px; width:450px" class="input-text"><?php echo $temp_find['value']; ?></textarea>

  4.         <font color="red">000000</font> 是发送的验证码!,请不要超过65个字,超过按照2条短信发送

  5.         </td>

  6.     </tr>
复制代码

7.修改文件\system\modules\admin\template.action.php

中的mobile_temp函数中加入下面的代码

  1. /*找回密码*/

  2. $temp_find = $this->db->GetOne("select value from `@#_caches` where `key` = 'template_mobile_find' LIMIT 1");



  3. $m_find_temp = $_POST['$m_find_temp'];



  4. preg_match_all("/./us", $m_find_temp, $match_find);

  5. if(count($match_find[0]) >=75){

  6. _message("找回密码短信模板不能超过75个字,请检查!");

  7. }


  8. $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){







欢迎光临 互亿无线-支持社区 (http://h.ihuyi.com/bbs/) Powered by Discuz! X3.2