卡在控制器中的if / elseif / else语句中

时间:2016-12-30 08:50:11

标签: php laravel laravel-5.2

我有一个登录页面。它的控制器功能有3种情况:

案例1.电子邮件或密码错误 - >显示错误//正常工作

案例2.未确认电子邮件 - >显示错误//正常工作

案例3.一切都很好 - >应该登录//不工作//显示空白页

我的逻辑:

public function postSignIn(Request $request)
{    
    $this->validate($request,[
        'loginEmail'=> 'required' ,
        'loginPassword' => 'required'
    ]);

    $remember = $request->input('remember_me');
    $user=User::where('email', $request['loginEmail'])->first();

    if(!$user)
    {
        \Session::flash('message','Login credentials are wrong!');
        \Session::flash('alert-class', 'alert-warning'); 
        return redirect()->back();
    }
    elseif($user->confirmed==1) 
    {
        if(Auth::attempt(['email'=>$request['loginEmail'], 'password' => $request['loginPassword']],$remember))
        {

            //return redirect()->back();
            return redirect()->route('myplace',['username' => $user->username]) ;
        }
    }
    else
    {
        \Session::flash('message','Please verify your email!');
        \Session::flash('alert-class', 'alert-warning'); 

        return redirect()->back();
    }       
}

3 个答案:

答案 0 :(得分:0)

你应该对第二个if。

添加一个else语句
if (!$user) {

    /* case 1. email or password is wrong */
} elseif ($user->confirmed==1) {

    /* Case 3 not working. Add an addition else statement */

    if(Auth::attempt(['email'=>$request['loginEmail'], 'password' => $request['loginPassword','confirmed'=>1]],$remember)) {
        ......
    } else {
        echo "Login attempt error!";
        var_dump(Auth::attempt(['email'=>$request['loginEmail'], 'password' => $request['loginPassword','confirmed'=>1]],$remember))
        exit;
    }

} else {
   /* case 2. email is not confirmed */
}

答案 1 :(得分:0)

这个if语句:

if(Auth::attempt(['email'=>$request['login...etc

没有else,所以如果不满足此条件,则不会发生任何事情。您需要在此语句中添加else

答案 2 :(得分:0)

我刚刚清理了我的数据库然后注册.hooray一切正常!

相关问题