给手机号发送验证码设置密码

该博客内容涉及手机验证码在设置支付密码过程中的应用。首先通过`editPwd()`函数接收手机号、支付密码和验证码,检查验证码的有效性和过期时间,然后更新用户密码。`verify_mobile()`函数验证手机号格式,确保其正确。`PayScode()`函数生成随机验证码并保存到数据库,再发送短信通知用户。整个流程确保了支付密码设置的安全性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

//设置支付密码
public function editPwd(){
    $userId=addslashes(I('post.userId'));
    //支付密码
    $loginPwd = addslashes(I('post.PayPwd'));
    //手机号
    $condition['userPhone'] =addslashes(I('post.userPhone'));
    $condition['userId'] =$userId;
    //验证码
    $verification=addslashes(I('post.verification'));
    $list = M('users')->where('userId='.$userId)->find();
    $time1= $list['time'];
    $time = time()-strtotime($time1);
    //过期时间
    $n=intval($time/60);
    $note=$list['num'];
    //设置时间
    if($verification!=$note || $n>10){
        $response = array(
            'code'  => 202,
            'message' => '验证码不正确!',
        );
    }else{
        $data1=array(
            'lastTime'=>date("Y-m-d H;i:s"),
            'payPwd'=>md5($loginPwd.$list['loginSecret']),
        );
        $list = M('users')->where($condition)->save($data1);
        if($list){
            $response = array(
                'code'  => 200,
                'message' => '设置密码成功',
            );
        }else{
            $response = array(
                'code'  => 201,
                'message' => '设置密码失败',
            );
        }
    }
    echo json_encode($response);
}

// 手机号基础验证
public function verify_mobile($mobile){
    if(!$mobile){
        echo   $this->callback.'('.json_encode(array(
            'code' => 1,
            'status' => '手机号不能为空!'
        )).')';exit;
    }

    $pattern = "/^13[0-9]{1}[0-9]{8}$|15[0-9]{1}[0-9]{8}$|18[0-9]{1}[0-9]{8}$|14[5|7]{1}[0-9]{8}$|17[3|6|7|8]{1}[0-9]{8}$/";
    $match = preg_match($pattern,$mobile);
    if(!$match){
        echo   $this->callback.'('.json_encode(array(
            'code' => 2,
            'status' => '手机号格式不正确!'
        )).')';exit;
    }
}

//获取短信验证码
public function PayScode(){
    //获取手机号
    $loginPhone =18810980234;
    $num= rand(1000, 9999);//设置随机数
    //查询手机号
    $m=M('users');
    $condition['userPhone'] =$loginPhone;
    $time=date('Y-m-d H:i:s');
    $data=array(
        'time'=>$time,
        'num'=>$num,
    );
    $re=$m->where($condition)->save($data);
    if($re){
        $note=$m->where($condition)->find();
        //短信验证码
        $num1=$note['num'];
        $sendAPI =  new \Think\SendAPI();
        $data = array(
            'content'  => '您的验证码: '.$num1.';本验证码10分钟内有效',//短信内容
            'mobile'   =>  $loginPhone,//手机号码
            'xh'      => ''//小号
        );
        $sendAPI->data = $data;//初始化数据包
        $re=$sendAPI->sendSMS('POST');//GET or POST
        if($re){
            $response = array(
                'code'  => 200,
                'message' => '验证码发送成功',
            );
        }else{
            $response = array(
                'code'  => 201,
                'message' => '验证码发送失败',
            );
        }

    }else{
        $response = array(
            'code'  => 202,
            'message' => '手机号不存在',
        );
    }
    echo json_encode($response);
}

http://pan.baidu.com/s/1gf6C9rH    密码 ngtj



在Java中,为了实现手机号发送验证码的功能,你需要结合短信服务提供商(如阿里云的SMS服务)和Spring Boot框架来构建。以下是简化的步骤和代码片段: 首先,你需要安装相关的依赖包,如`aliyun-sdk-core`和`aliyun-sdk-sms`。 1. 配置短信服务: ```java @Configuration public class SmsConfig { @Value("${sms.accessKeyId}") private String accessKeyId; @Value("${sms.accessKeySecret}") private String accessKeySecret; @Value("${sms.regionId}") private String regionId; @Bean public SMS smsClient() { SimpleAccessCredentials credentials = new SimpleAccessCredentials(accessKeyId, accessKeySecret); return new DefaultSmsProducer(new AlibabaCloudSmsProducerConfiguration( AlibabaCloudSmsProducerConfiguration.builder() .withEndpoint(regionId + ".auth.aliyuncs.com") .withCredentials(credentials) .build())); } } ``` 2. 创建发送验证码的API: ```java @Service public class SMSService { private final SMS smsClient; @Autowired public SMSService(SMS smsClient) { this.smsClient = smsClient; } public String sendCode(String phoneNumber) throws SMSSendException { SendSmsRequest request = new SendSmsRequest(); request.setPhoneNumbers(phoneNumber); request.setSignName("YourApp"); request.setTemplateCode("your_template_code"); // 根据模板ID获取 request.setTemplateParamaters(Arrays.asList("验证码", generateRandomCode())); return smsClient.send(request).getSendStatus().toString(); // 返回发送状态 } private String generateRandomCode() { // 自定义生成随机验证码 return Integer.toString((int) (Math.random() * 10000)); } } ``` 3. 用户修改密码接口调用发送验证码: ```java @RestController @RequestMapping("/api") public class PasswordResetController { @Autowired private SMSService smsService; @PostMapping("/sendCode") public ResponseEntity<?> sendCode(@RequestParam String phoneNumber) { try { String code = smsService.sendCode(phoneNumber); // ... 将code发送给用户,比如通过邮件或前端展示 return ResponseEntity.ok("验证码发送,请查收"); } catch (SMSSendException e) { return ResponseEntity.badRequest().body("发送失败:" + e.getMessage()); } } // 省略密码更新接口的实现... } ``` 请注意,这只是一个基本的示例,实际项目中还需要考虑错误处理、安全性以及短信服务的费用等。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值