bounty将在7天后过期。回答此问题的人有资格获得+50的声望奖励。Pouya希望吸引更多人关注此问题。
我制作了一个方法,向用户的移动的号码发送一个临时代码,用于验证用户的帐户:
public function signInWithToken()
{
// Session::forget('codeSent');
if(Session::has('nextStep') && Session::has('foundUser')) {
$user = User::where('usr_mobile_phone', Session::get('foundUser'))->first();
if(Session::has('codeSent')){
$nowTime = now();
$sentTime = Session::get('codeSent');
$diffedTime = $sentTime->diffInSeconds($nowTime);
if($diffedTime == 0){
$user->activeCode()->delete();
Session::forget('codeSent');
}
return view('frontend.auth.token',compact('diffedTime'));
}else{
$code = ActiveCode::generateCode($user);
$user->notify(new ActiveCodeNotification($code, Session::get('foundUser')));
Session::put('codeSent', now()->addMinutes(10));
return view('frontend.auth.token');
}
}else{
abort(404);
}
}
因此,第一次生成代码,会话codeSent
也将被提交,其值比当前时间高10分钟。
然后,我还需要检查这个会话是否已经提交,然后它必须从$sentTime
中减去$nowTime
,以确定代码是否在10分钟前生成,是否太旧:(因此必须从DB中删除代码,并且必须忘记会话)
$nowTime = now();
$sentTime = Session::get('codeSent');
$diffedTime = $sentTime->diffInSeconds($nowTime);
if($diffedTime == 0){
$user->activeCode()->delete();
Session::forget('codeSent');
}
然后在刀片上,我需要类似这样的东西:
@if(session('codeSent'))
<div class="alert alert-warning" role="alert">
Seconds left for code expiration:
{{ $diffedTime }}
</div>
@endif
但是不知道如何在刀片上生动地显示这个$diffedTime
,因为它每秒都在变化。
所以如果你知道,请让我知道,我真的很感激任何想法或建议,从你们...
1条答案
按热度按时间eivgtgni1#
您需要使用javascript来设置计时器: