使用手機註冊碼註冊會員,阿里大於接口的使用如下:
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 '註冊失敗';
}
}