[当我尝试使用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>
收到错误邮件的原因是必需的,因为您发送的是电子邮件而不是邮件。只需将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!',
]);
}
您的HTML为<input type="text" class="form-control" name="email" />
输入的名称是“电子邮件”,在php中搜索“邮件”
'mail' => 'required|email',
应该是:
<input type="text" class="form-control" name="mail" />