纯手机号注册登录只有一个页面,后端根据数据库中是否存在手机号自动判断是注册还是登录
整页模板,可Ctrl+A复制完整粘贴
欢迎登录 阅读并同意 《服务协议》 和 《隐私政策》 若手机号未注册,则登录自动注册
PHP代码
public function login_or_register_by_sms() { $user_phone = input('user_phone'); $code = input('code'); if (empty($user_phone)) { return error('请输入账号'); } if (empty($code)){ return error('请输入短信验证码'); } $storage = Db::name('storage')->where('storage_type','smsCode')->where('storage_key',$user_phone)->find(); if (!$storage){ return error('短信验证码不存在,请发送短信验证码'); } if ($storage['storage_addtime'] + 300 < time()){ return error('短信验证码过期,请重新发送'); } if ($storage['storage_error'] >= 5){ Db::name('storage')->where('storage_type','smsCode')->where('storage_key',$user_phone)->delete(); return error('验证码错误次数超出限制,请稍后再试'); } if ($code != $storage['storage_value']){ Db::name('storage')->where('storage_key',$user_phone)->update([ 'storage_error'=>$storage['storage_error'] + 1, ]); return error('短信验证码错误,请重新输入'); } $user = Db::name('user')->where('user_phone',$user_phone)->find(); if (!$user) { $id = Db::name('user')->insertGetId([ 'user_type' => 1, 'user_phone' => $user_phone, 'user_password' => md5('zx55wcv36bn'.'123456'), 'user_addtime' => time(), ]); } else { $id = $user['user_id']; if ($user['user_status'] == 0){ return error('账户已被禁用,请联系管理员'); } } $resp['user_id'] = $id; $resp['user_hash'] = hash('sha256', md5($id)); return json(['status'=>1,'msg'=>'登录成功','data'=>$resp]); }
数据库
CREATE TABLE `ai_storage` ( `storage_id` int(11) NOT NULL AUTO_INCREMENT, `storage_key` char(255) DEFAULT NULL COMMENT '手机号', `storage_type` char(255) DEFAULT NULL COMMENT 'smsCode', `storage_value` char(255) DEFAULT NULL COMMENT '验证码', `storage_addtime` bigint(20) DEFAULT NULL, `storage_sort` int(11) DEFAULT NULL, `storage_error` int(11) NOT NULL DEFAULT '0', PRIMARY KEY (`storage_id`) ) ENGINE=MyISAM AUTO_INCREMENT=2 DEFAULT CHARSET=utf8mb4 COMMENT='手机验证码';