使用手机注册码注册会员,阿里大于接口的使用如下:
public function sendSms(Request $request){
$phone = $request ->input('account'); // 用户手机号,接收验证码
$user=Login::where('account','=',$phone)->first();
//注意,查询一条数据就是用first();
if($user){
return '1';//前台判断,如果是1就显示已有账号,不可注册
}
$name = '兄弟连'; // 短信签名,可以在阿里大鱼的管理中心看到
$num = rand(100000, 999999); // 生成随机验证码
session()->put('num',$num);
$smsParams = [
'number' => "$num"
];
$content = json_encode($smsParams); // 转换成json格式的
$code = "SMS_75835101"; // 阿里大于(鱼)短信模板ID
//$request ->session()->put('alidayu',$num); // 存入session 后面做数据验证
$result=$this->sms->send($phone,$name,$content,$code);
if(property_exists($request,'result')){
// 使用PHP函数json_encode方法将给定数组转化为JSON:
return '2';//前台判断,如果是2就显示发送成功
}else{
return '3';//前台判断,如果是2就显示发送失败
}
}
所要注意的是当查询一条数据时,就需要用first();而不是用get();
我这里是插入两张表,其中一张是登陆表,一张是用户表,所以要用到事物来操作。
public function createUser(Request $request)
{
$account=$request->input('account');
$password=$request->input('password');
$repassword=$request->input('repassword');
$code=$request->input('code');
if(!$password==$repassword){
return back()->with('两次密码输入不一致');
}
$user=Login::where('account','=',$account)->first();
if($user){
return back()->with('此账号已存在!');
}
if(session()->get('num')!=$code){
return back()->with('验证码错误!');
}
try {
// 开始事物
\DB::beginTransaction();
// 向用户注册原始表 添加一条数据
$res1 = User::insertGetId(['account'=>$account,'password'=>Md5($password),'tel'=>$account,'buy_time'=>null,'dead_line'=>null,'login_time'=>null,'last_time'=>null]);
$res2 = Login::insertGetId(['account'=>$account,'password'=>Md5($password)]);
//$res2 = \DB::table('login')->insertGetId(['account'=>$account,'password'=>$password]);
if($res1 && $res2){
// 全部正确 事物提交
\DB::commit();
}
// 存入用户登录信息
session()->put('adminn',$account);
// 存入用户基本信息
return redirect("a/home");
} catch (Exception $e) {
// 事物回滚
\DB::rollBack();
return '注册失败';
}
}