Laravel форма входа - адрес электронной почты неверен - PullRequest
0 голосов
/ 27 мая 2020

Когда я пытаюсь войти в систему с помощью формы в Laravel и сохранить сеанс для перенаправления на домашнюю страницу, я всегда получаю сообщение о том, что требуемый адрес электронной почты неверен, даже если он правильный

Это контроллер:

public function welcome (Request $request) {
    { 
        $this->validate($request, [

        'mail' => 'required|email',
        'mdp'=> 'required'
    ]);
    $patt= patient::orderBy('created_at','desc')->get() ;
    foreach ($patt as $log ) 
    {
        if (( $log->Login== $request->input('mail') ) && ( $log->Password== $request->input('mdp') ))
        {
            $request->session()->put('log_in', true);
            return redirect('index' , ['helloo'=>$log]);
        }

     return back()->withErrors([
        'message'=> 'Emails or password not correct!'
        ]) ;  }

}

Web. php:

Route::Post('/index' , 'patientcontroller@welcome')->name('rahmaa');

Форма:

<form  class="form-signin" method="post" action="{{route('rahmaa')}}"> 
    @csrf  
  <input type="text" class="form-control" name="email" placeholder="Adresse mail" data-rule="email" autofocus="" /> </br>
      <input type="password" class="form-control" name="mdp" placeholder="Mot de passe" data-rule="required"/>      

      <button class="btn btn-primary btn-block" type="submit"> Se connecter </button> <br>
     <center> <a href="inscription"> Inscrivez-vous </a>  </center> 
    </form>

Ответы [ 2 ]

4 голосов
/ 27 мая 2020

Причина, по которой вы получаете сообщение об ошибке, связана с тем, что вы отправляете электронную почту, а не почту. просто измените mail на email

$this->validate($request, [
    'email' => 'required|email',
    'mdp'=> 'required'
]);

или измените ввод name attribute на mail

<input name="mail"/>

переписать вашу функцию

use Illuminate\Support\Facades\Hash;
....

public function welcome(Request $request)
    {
        $request->validate([
            'email' => 'required|email',
            'mdp' => 'required',
        ]);

        // since email is unique. no need to grab all data
        $patient = patient::where('Login', $request->input('email'))->first();

        // if patient exists
        if ($patient) {

            // check hashed password
            // assuming $patient->Password hashed
            if (Hash::check($request->input('mdp'), $patient->Password)) {
                $request->session()->put('log_in', true);
                return redirect('index', compact('patient'));
            }
        }

        return back()->withErrors([
            'message' => 'Emails or password not correct!',
        ]);
    }
1 голос
/ 27 мая 2020

Ваш HTML равен <input type="text" class="form-control" name="email" /> Имя ввода - «email», в php вы ищете «mail»

'mail' => 'required|email',

Это должно быть:

<input type="text" class="form-control" name="mail" />
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...