Php 如何在Laravel中解决此登录错误

Php 如何在Laravel中解决此登录错误,php,mysql,laravel,Php,Mysql,Laravel,我创建了一个名为UserLogin.blade.php的登录表单。我创建了一个名为UserLoginControl.php的控制器和一个名为login.php的模型。现在我想使用数据库中的用户名和密码登录我的系统。但是,在我输入用户名和密码并单击“登录”按钮后,它会显示此错误- (1/1)错误异常 未定义索引:密码 但是,我已经在UserLoginController.php文件中声明了用户名和密码 我怎样才能解决这个问题 下面是UserLogin.blade.php(视图文件) 以下是我创建的

我创建了一个名为UserLogin.blade.php的登录表单。我创建了一个名为UserLoginControl.php的控制器和一个名为login.php的模型。现在我想使用数据库中的用户名和密码登录我的系统。但是,在我输入用户名和密码并单击“登录”按钮后,它会显示此错误-

(1/1)错误异常

未定义索引:密码

但是,我已经在UserLoginController.php文件中声明了用户名和密码

我怎样才能解决这个问题

下面是UserLogin.blade.php(视图文件)

以下是我创建的路线

这是我的登录表


您应该使用$request上的get方法访问发布的数据,而不是使用数组语法

if (Auth::attempt(['username' => $request->get('username'), 'pw' => $request->get('password')])) {
    return redirect('RegView');
}

您应该使用$request上的get方法访问发布的数据,而不是使用数组语法

if (Auth::attempt(['username' => $request->get('username'), 'pw' => $request->get('password')])) {
    return redirect('RegView');
}
根据,有两种方法可以做到这一点(为了清晰起见,在本文中进行了包装):

根据,有两种方法可以做到这一点(为了清晰起见,在本文中进行了包装):


首先检查您的型号
login
在登录数据库模式中是否有一个字段
password
,然后更改以下内容:

if (Auth::attempt(['username' => $request->get('username'), 'pw' => $request->get('password')])) {
    return redirect('RegView');
}
'providers' => [
        'users' => [
            'driver' => 'eloquent',
            'model' => App\User::class,
        ],

        // 'users' => [
        //     'driver' => 'database',
        //     'table' => 'users',
        // ],

        'users' => [
            'driver' => 'eloquent',
            'model' => App\login::class,
        ],
致:

也可以转到您的应用程序/Http/Auth/LoginController.php并添加以下内容:

  /**
     * Get the login username to be used by the controller.
     *
     * @return string
     */
    public function username()
    {
        return 'username';
    }
最后改变这一点:

if (Auth::attempt(['username' => $request->get('username'), 'pw' => $request->get('password')])) {
    return redirect('RegView');
}
'providers' => [
        'users' => [
            'driver' => 'eloquent',
            'model' => App\User::class,
        ],

        // 'users' => [
        //     'driver' => 'database',
        //     'table' => 'users',
        // ],

        'users' => [
            'driver' => 'eloquent',
            'model' => App\login::class,
        ],
为此:

'providers' => [

        'users' => [
            'driver' => 'eloquent',
            'model' => App\login::class,
        ],
如果页面刷新:

@if ($errors->any())
    <div class="alert alert-danger">
        <ul>
            @foreach ($errors->all() as $error)
                <li>{{ $error }}</li>
            @endforeach
        </ul>
    </div>
@endif
@if($errors->any())
    @foreach($errors->all()作为$error)
  • {{$error}}
  • @endforeach
@恩迪夫
如果您真的想使用
pw
而不是
password
查看以下答案:

首先检查您的型号
登录
在登录数据库模式中是否有一个字段
密码
,然后更改此字段:

if (Auth::attempt(['username' => $request->get('username'), 'pw' => $request->get('password')])) {
    return redirect('RegView');
}
'providers' => [
        'users' => [
            'driver' => 'eloquent',
            'model' => App\User::class,
        ],

        // 'users' => [
        //     'driver' => 'database',
        //     'table' => 'users',
        // ],

        'users' => [
            'driver' => 'eloquent',
            'model' => App\login::class,
        ],
致:

也可以转到您的应用程序/Http/Auth/LoginController.php并添加以下内容:

  /**
     * Get the login username to be used by the controller.
     *
     * @return string
     */
    public function username()
    {
        return 'username';
    }
最后改变这一点:

if (Auth::attempt(['username' => $request->get('username'), 'pw' => $request->get('password')])) {
    return redirect('RegView');
}
'providers' => [
        'users' => [
            'driver' => 'eloquent',
            'model' => App\User::class,
        ],

        // 'users' => [
        //     'driver' => 'database',
        //     'table' => 'users',
        // ],

        'users' => [
            'driver' => 'eloquent',
            'model' => App\login::class,
        ],
为此:

'providers' => [

        'users' => [
            'driver' => 'eloquent',
            'model' => App\login::class,
        ],
如果页面刷新:

@if ($errors->any())
    <div class="alert alert-danger">
        <ul>
            @foreach ($errors->all() as $error)
                <li>{{ $error }}</li>
            @endforeach
        </ul>
    </div>
@endif
@if($errors->any())
    @foreach($errors->all()作为$error)
  • {{$error}}
  • @endforeach
@恩迪夫
如果您真的想使用
pw
而不是
password
查看以下答案: 在控制器中:

if (Auth::attempt(['username' => $request->get('username'), 'password' => $request->get('password')])) {
    return redirect('RegView');
}
在您的模型中:

protected $fillable = [
    'username', 'password'
];
在控制器中:

if (Auth::attempt(['username' => $request->get('username'), 'password' => $request->get('password')])) {
    return redirect('RegView');
}
在您的模型中:

protected $fillable = [
    'username', 'password'
];

请求方法的可能副本是对象而不是数组。因此,您将通过$request->password@BikashP-但是,给了我未定义的索引:密码错误。。如何修复此问题?请求方法的可能副本是对象而不是数组。因此,您将通过$request->password@BikashP-但是,给了我未定义的索引:密码错误。。我该如何解决这个问题呢?不过,它给了我一个未定义的索引:密码错误。。我该如何解决这个问题呢?不过,它给了我一个未定义的索引:密码错误。。我该如何解决这个问题呢?不过,它给了我一个未定义的索引:密码错误。。我该如何解决这个问题呢?不过,它给了我一个未定义的索引:密码错误。。如何修复此问题?当我使用此选项时,页面将刷新。。什么事也没发生。。如何解决这个问题??你能试着用
dd($request->all())调试它吗并检查它是否有来自表单的数据?它将输出一个类似以下内容的数组:3[▼   “_token”=>“ytBDTz45zi1ac1oOgwH83XFEszcpMpsc0MlZ3A6l”“用户名”=>”test@gmail.com“password”=>“test”]
Yh,它会像这样显示正确的用户名和密码-数组:4[▼ “_token”=>“TixaQBCmgwXoCDFs5owm9r4hexRPhzfaxFBgqRzR”“用户名”=>“用户”“登录”=>“登录”]
if(auth()->尝试(['email'=>$request->email,'password'=>$request->password]){return redirect()->路由('dashboard');}否则{return return back()(['message'=>'请检查您的凭据并重试。];}
尝试类似的操作,然后尝试添加
dd()
在if语句中,如果您的代码正在执行。但是,数据库中没有名为email的列。如何修复此问题?当我使用此选项时,页面将刷新。什么也没有发生。如何修复此问题?您是否可以尝试使用
dd($request->all()调试它;
在if语句之前的控制器中,检查它是否有来自表单的数据?它将输出类似以下内容的数组:3[▼ “_token”=>“ytBDTz45zi1ac1oOgwH83XFEszcpMpsc0MlZ3A6l”“用户名”=>”test@gmail.com“password”=>“test”]Yh,它会像这样显示正确的用户名和密码-数组:4[▼ “_token”=>“TixaQBCmgwXoCDFs5owm9r4hexRPhzfaxFBgqRzR”“用户名”=>“用户”“登录”=>“登录”]
if(auth()->尝试(['email'=>$request->email,'password'=>$request->password]){return redirect()->路由('dashboard');}否则{return return back()(['message'=>'请检查您的凭据,然后重试。];}
尝试类似的操作,并尝试在执行代码的if语句中添加
dd()
。但是,数据库中没有名为email的列。我如何解决此问题??