Php LARAVEL-登录时显示用户的名称

Php LARAVEL-登录时显示用户的名称,php,laravel,laravel-5,Php,Laravel,Laravel 5,我已经做了一个登录页面'管理员登录',它重定向到一个页面'管理员'认证时。我想在“管理员”页面上显示登录用户的姓名 看看我的代码: 控制器: public function login(Request $req) { $email = $req->input('email'); $password = $req->input('password'); $checkLogin = DB::table('admin')->where(['email'=&g

我已经做了一个登录页面'管理员登录',它重定向到一个页面'管理员'认证时。我想在“管理员”页面上显示登录用户的姓名

看看我的代码: 控制器:

public function login(Request $req) {
    $email = $req->input('email');
    $password = $req->input('password');

    $checkLogin = DB::table('admin')->where(['email'=>$email,'password'=>$password])->get();

    if(count($checkLogin) > 0) {
        return view('admin')->with(['name'=>" "]);
    }

    else {
       // echo "Login Failed!";
       return Redirect::route('admin-login')->with(['error'=> "Invalid email or Password!!"]);
    }
}
return view('admin', ['name' => $checkLogin]);
我不知道在这里用(['name'=>“”]);'写什么。请帮帮我

视图:

    @客人
  • @否则

您说过
Auth::user()->name
对您不起作用,也就是说您保留了原样的密码,而没有对其进行哈希运算。而且,看起来您正在使用多个表来存储用户。在这种情况下,
Auth::check()
@guest
@Auth
和其他指令将不适用于您

您需要添加新的防护,修改一些Laravel代码并手动登录用户。但由于您是Laravel的新手,我认为对您来说,更简单的解决方案是手动检查用户:

$admin = DB::table('admin')->where(['email' => $email, 'password' => $password])->first();
if (empty($admin)) {
    return redirect()->route('admin-login')->with('error', 'Invalid email or Password!');
}
您还可以将变量传递给视图,并使用会话在请求之间共享变量:

session(['user' => $admin]);
这样做而不是
@auth

if (session('user'))
而不是
@guest

if (empty(session('user')))
并显示管理员姓名:

{{ session('user')->name }}
如果您还希望避免在没有用户时出错,请使用
optional()
helper:

{{ optional(session('user'))->name }}
如果用户通过身份验证,它将打印一个名称;如果用户未通过身份验证,它将不打印任何内容


我真的建议您使用
brcypt()
helper散列密码,为所有用户使用一个表,只为用户分配角色。在这种情况下,您将能够使用内置的身份验证系统,并且用户的凭据将是安全的。

您说过
auth::user()->name
对您不起作用,这就是说您将密码保持原样,而不对其进行哈希运算。而且,看起来您正在使用多个表来存储用户。在这种情况下,
Auth::check()
@guest
@Auth
和其他指令将不适用于您

您需要添加新的防护,修改一些Laravel代码并手动登录用户。但由于您是Laravel的新手,我认为对您来说,更简单的解决方案是手动检查用户:

$admin = DB::table('admin')->where(['email' => $email, 'password' => $password])->first();
if (empty($admin)) {
    return redirect()->route('admin-login')->with('error', 'Invalid email or Password!');
}
您还可以将变量传递给视图,并使用会话在请求之间共享变量:

session(['user' => $admin]);
这样做而不是
@auth

if (session('user'))
而不是
@guest

if (empty(session('user')))
并显示管理员姓名:

{{ session('user')->name }}
如果您还希望避免在没有用户时出错,请使用
optional()
helper:

{{ optional(session('user'))->name }}
如果用户通过身份验证,它将打印一个名称;如果用户未通过身份验证,它将不打印任何内容


我真的建议您使用
brcypt()
helper散列密码,为所有用户使用一个表,只为用户分配角色。在这种情况下,您将能够使用内置的身份验证系统,并且用户的凭据将是安全的。

尝试使用以下代码:

public function login(Request $req) {
    $email = $req->input('email');
    $password = $req->input('password');

    $checkLogin = DB::table('admin')->where(['email'=>$email,'password'=>$password])->first();

    if(count($checkLogin) > 0) {
        return view('admin')->with(['name'=>$checkLogin->name]);
    }

    else {
       // echo "Login Failed!";
       return Redirect::route('admin-login')->with(['error'=> "Invalid email or Password!!"]);
    }
}

请尝试使用以下代码:

public function login(Request $req) {
    $email = $req->input('email');
    $password = $req->input('password');

    $checkLogin = DB::table('admin')->where(['email'=>$email,'password'=>$password])->first();

    if(count($checkLogin) > 0) {
        return view('admin')->with(['name'=>$checkLogin->name]);
    }

    else {
       // echo "Login Failed!";
       return Redirect::route('admin-login')->with(['error'=> "Invalid email or Password!!"]);
    }
}

您可以通过
Auth::user()

他的名字像


Auth::user()->name

您可以通过
Auth::user()

他的名字像


Auth::user()->name

如果您使用laravel默认身份验证模型,您只需使用{{auth::user()->name}}它将打印登录用户的名称。

如果您使用laravel默认身份验证模型,您只需使用{auth::user()->name}它将打印登录用户的名称。

尝试在控制器中使用此选项:

public function login(Request $req) {
    $email = $req->input('email');
    $password = $req->input('password');

    $checkLogin = DB::table('admin')->where(['email'=>$email,'password'=>$password])->get();

    if(count($checkLogin) > 0) {
        return view('admin')->with(['name'=>" "]);
    }

    else {
       // echo "Login Failed!";
       return Redirect::route('admin-login')->with(['error'=> "Invalid email or Password!!"]);
    }
}
return view('admin', ['name' => $checkLogin]);
然后在视图中,需要创建foreach循环:

@foreach($checkLogin as $key => $value)
    <p> {{ $value->email }} </p>
    <p> {{ $value->name }} </p>

@endforeach

尝试在控制器中使用此选项:

public function login(Request $req) {
    $email = $req->input('email');
    $password = $req->input('password');

    $checkLogin = DB::table('admin')->where(['email'=>$email,'password'=>$password])->get();

    if(count($checkLogin) > 0) {
        return view('admin')->with(['name'=>" "]);
    }

    else {
       // echo "Login Failed!";
       return Redirect::route('admin-login')->with(['error'=> "Invalid email or Password!!"]);
    }
}
return view('admin', ['name' => $checkLogin]);
然后在视图中,需要创建foreach循环:

@foreach($checkLogin as $key => $value)
    <p> {{ $value->email }} </p>
    <p> {{ $value->name }} </p>

@endforeach

在我的例子中,我使用authenticationlogin命令使laravel框架执行登录系统。 您以以下身份登录:


{{Auth::user()->name}

在我的例子中,我使用authentication login命令使laravel框架执行登录系统。 您以以下身份登录:



{{Auth::user()->name}

它不工作。抛出错误-“此集合实例上不存在属性[name]。这里的$user是什么?@user9332352您可以添加($checkLogin)?它不起作用了。抛出错误-“此集合实例上不存在属性[name]。这里的$user是什么?@user9332352您可以添加($checkLogin)?我没有得到任何错误。但是没有显示用户名@来宾部分已执行。@user9332352如果对您有效,请告诉我。如果您使用默认方法注册用户,或者在创建新用户时使用
bcrypt()
,我相信所有其他答案都不会起作用。@user9332352而且看起来您使用的是默认注册方法,因为您正在执行
路由('register')
会话工作正常。问题在于查看页面中的“@guest else”标记。我需要使用一些if-else语句。我希望这能帮助您向我推荐解决方案。@user9332352但您已经说过,我以前的解决方案是
auth()->user()->name
,不起作用。我的问题是,您是将密码存储在表中,类似于
mypass145
还是
$2y$10$UJitdozRrdn4JlcojBJgh.A.DRfjTr8Bv30uZRDR.iEJA5s1Q0od6
。请检查这个。我没有收到任何错误。但是没有显示用户名@来宾部分已执行。@user9332352如果对您有效,请告诉我。如果您使用默认方法注册用户,或者在创建新用户时使用
bcrypt()
,我相信所有其他答案都不会起作用。@user9332352而且看起来您使用的是默认注册方法,因为您正在执行
路由('register')
会话工作正常。问题在于查看页面中的“@guest else”标记。我需要使用一些if-else语句。我希望这能对你的建议有所帮助