手机号码绑定操作

手机号码绑定操作

这里我实现了一个通过发送短信绑定手机号的功能,这里主要的实现与之前发送邮箱注册差别不大,比较大的区别就是发送短信需要发送curl请求api地址,来让第三方发送我们写好的验证码。具体发送的逻辑代码差别不大,就是在发送验证码时使用redis上锁60s,在60s时间中,若验证码成功验证则将锁删除。这样就可以实现绑定手机号的操作。

控制器代码
    /*
     * 用户通过手机号发送短信
     */
    public function bindPhone()
    {
        $conn = getRedis();
        $conn->selectDb(0);
        $data = $this->input->post();
        if (empty($data['id']) || empty($data['phone'])) {
            fail(400, '参数错误!');
        }
        $res1 = validate_phone($data['phone']);
        if (!$res1) {
            fail(400, '手机号码格式错误!');
        }
        $res2 = $this->users_model->existPhone($data['phone']);
        if ($res2) {
            fail(400, '该手机号码已经绑定!');
        }
        $res = $this->users_model->checkUser($data['id']);
        if (!$res) {
            fail(400, '该用户不存在!');
        }
        $key = $data['id'] . "_msg_".$data['phone'];
        //通过手机号发送短信验证码
        $code = rand_code(4);
        //上锁
        if (!$conn->setNx($key,$code)){
            fail(400,"您操作的太快了!上个验证码还未过期!");
        }
        //60秒过期
        $conn->expire($key,60);
        $status = send_msg($data['phone'], $code);
        if (!$status) {
            //发送短信失败!
            //删除缓存
            $conn->del($key);
            fail(400,'短信发送失败!');
        }
        success($code,"发送成功!");
    }

    /*
     * 绑定手机号
     */
    public function bindPhoneSubmit()
    {
        $conn = getRedis();
        $conn->selectDb(0);
        $data = $this->input->post();
        if (empty($data['id']) || empty($data['phone']) || empty($data['code'])) {
            fail(400, '参数错误!');
        }
        $res1 = validate_phone($data['phone']);
        if (!$res1) {
            fail(400, '手机号码格式错误!');
        }
        $res2 = $this->users_model->existPhone($data['phone']);
        if ($res2) {
            fail(400, '该手机号码已经绑定!');
        }
        $res = $this->users_model->checkUser($data['id']);
        if (!$res) {
            fail(400, '该用户不存在!');
        }
        //验证短信验证码是否正确
        $key = $data['id'] . "_msg_".$data['phone'];
        $code = $conn->get($key);
        if (empty($code)){
            fail(400,'未发送验证码!');
        }
        if ($code != $data['code'])
        {
            fail(400,'验证码错误!');
        }
        //执行绑定手机号操作
        $res = $this->users_model->bindPhoneSubmit($data);
        if (!$res){
            fail(400,'操作失败!');
        }
        //成功将redis中的验证码删除
        $conn->del($key);
        success([],'绑定手机号成功');
    }
发送短信操作使用的功能函数

/*
 * 验证手机号码是否正确
 */
if (!function_exists('validate_phone')) {
    function validate_phone($phone)
    {
        $rules = "/^1[34578]\d{9}$/";
        return preg_match($rules, $phone);
    }
}


//发送curl请求函数
if (!function_exists('curl_request')) {
    function curl_request($url, $post = true, $params = array(), $https = true)
    {
        //初始化请求会话
        $ch = curl_init($url);
        if ($post) {
            //设置请求方式为post
            curl_setopt($ch, CURLOPT_POST, true);
            //设置请求参数
            curl_setopt($ch, CURLOPT_POSTFIELDS, $params);
        }
        if ($https) {
            //如果是https协议,禁止服务器验证本地证书
            curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
        }
        //发送请求,获取返回参数
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
        $res = curl_exec($ch);
        //关闭请求
        curl_close($ch);
        return $res;
    }
}

/*
 * 发送短信接口
 */
if (!function_exists('send_msg')) {
    function send_msg($phone, $msg)
    {
        //这里我将一些参数写在config文件中
        $app_key = config_item('msg_app_key');
        $url = config_item('msg_url');
        $sign = config_item('sign');
        $content = "您的本次的验证码是:" . $msg . "。";
        $url = $url . '?sign=' . $sign . '&mobile=' . $phone . '&content=' . $content . '&appkey=' . $app_key;
        //这里因为我已经将测试次数用完所以关闭(正常需要打开)
        //$data = curl_request($url,false);
        //$data = json_decode($data,true);
        //$data['code'] == 10000 ? $status = true : $status =false;
        //测试(这里正常需要关闭)
        //设置短信发送成功
        $status = true;
        return $status;
    }
}

模型操作
public function bindPhoneSubmit($data)
{
    $this->db->update('users', ['phone' => $data['phone']], ['id' => $data['id']]);
    return $this->db->affected_rows() ? true : false;
}

这里我就不放运行结果了,这里的功能可以实现。

### 回答1: 如果你想要查找自己抖音账号绑定手机号码,可以按照以下步骤操作: 1. 打开抖音APP,进入个人中心页面。 2. 点击右上角的“三个点”按钮,进入设置页面。 3. 在设置页面中,选择“账号与安全”选项。 4. 在账号与安全页面中,选择“手机号码”选项。 5. 如果你绑定手机号码,就会显示出来。如果没有绑定,可以在此页面进行手机号码绑定。 如果你想要查找别人抖音账号绑定手机号码,这是不被允许的,因为这涉及到个人隐私。 ### 回答2: 抖音是一款非常流行的短视频社交应用,在使用抖音时可以绑定手机号码来保护账号安全。想要查找绑定手机号码,可以按照以下步骤操作。 1. 打开抖音应用,进入个人资料页面。可以通过点击右下角的“我”按钮来进入个人页面。 2. 在个人资料页面中,点击右上角的设置按钮(通常是一个齿轮图标)。 3. 进入设置页面后,向下滑动找到“账号与安全”选项,点击进入。 4. 在账号与安全页面中,可以看到已绑定手机号码。通常会显示部分数字,为保护隐私安全,可能会用星号或其他符号代替部分数字。 5. 如果想要显示完整的手机号码,需要进行身份验证。点击绑定手机号码,然后选择验证方式,可以选择短信验证或验证登录密码。 6. 按照系统提示进行操作,完成身份验证后即可显示完整的绑定手机号码。 需要注意的是,以上方法是常规方法,但由于抖音的更新和改版,具体的操作方式可能会有所变化。如果以上方法不适用,可以尝试查看抖音的官方帮助文档或咨询抖音官方客服获取具体信息。 ### 回答3: 要查找抖音账号绑定手机号码,可以按照以下步骤进行: 首先,打开手机上的抖音应用。 接下来,点击底部导航栏右下角的“我”选项,进入个人页面。 在个人页面上,点击右上角的设置按钮,进入设置页面。 在设置页面上,向下滑动找到“账号与安全”选项,点击进入。 在“账号与安全”页面上,可以看到绑定手机号码。如果没有显示手机号码,可能需要进行身份验证,输入账号密码或绑定的其他验证方式。 在验证身份后,即可找到抖音账号绑定手机号码。 需要注意的是,不同版本的抖音应用界面可能会有所不同,但大致的操作流程是相似的。如果无法找到绑定手机号码,可以尝试联系抖音的客服或寻求其他帮助途径。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值