Ошибка Laravel с неправильной электронной почтой при входе в систему

#php #laravel

#php #laravel

Вопрос:

У меня есть модуль регистрации входа, который построен с использованием аутентификации.Все мысли работают нормально.Предположим, у меня есть следующий идентификатор электронной vision myvison@gmail.com почты в таблице пользователей базы данных, но когда я пытаюсь войти в систему, он выдает неверный адрес электронной почты.Я почти уверен, что он выдает ошибку из plus -за идентификатора электронной почты.В моем проекте необходимо принять plus из-за псевдонима.Может ли кто-нибудь помочь мне, как исправить эту проблему.Я использую необработанный запрос

 $userDetails = DB::table('users')->select('id', 'firstname', 'lastname', 'email', 'password', 'role', 'confirm', 'status')->where('email', $email)->first();
 

Обновлено

 public function login(Request $request) {    
        $validator = Validator::make($request->all(), [
        'password' => 'required',
        'email' => 'required',
        ]);
        if ($validator->fails()) { 
            echo "error";
        }
        $email = $request->input('email');
        $password = $request->input('password'); 
        Log::info($email);

        $userDetails = DB::table('users')->select('id', 'firstname', 'lastname', 'email', 'password', 'role', 'confirm', 'status')->where('email', $email)->first();

        if (count($userDetails) != 0) {
 

Обновлено 2

  <form class="form-horizontal" role="form" method="POST" action="{{ url('/auth/login') }}">
                        <input type="hidden" name="_token" value="{{ csrf_token() }}"/>
                        <h4 class="nomargin">Sign in</h4>

                        <input type="text" class="form-control uname" name="email" placeholder="email" autocomplete="off" value="{{ old('email') }}" />
                        <input type="password" class="form-control pword" name="password" placeholder="password" autocomplete="off" />
                        <a style="color:#17a08c" href="{{ url('/password/email') }}"><small>Forgot Password</small></a>
                        <button type="submit" class="btn btn-success btn-block text-capitalise">Sign in</button>
                    </form>
 

Комментарии:

1. Перед строкой, которую вы написали выше, можете ли вы сделать Log::info($email) и посмотреть, что передается в конструктор запросов? Зарегистрированное сообщение будет доступно в storage/logs/laravel.log

2. @ЛайонеЛчан. Спасибо за предложение. я получаю пробел вместо плюса

3. @LionelChan.is есть ли способ принять плюс по электронной почте

4. Как вы отправили сообщение? Можете ли вы показать нам фрагмент, в котором вы публикуете форму входа?

5. @LionelChan.обновленный вопрос

Ответ №1:

Если вы отправляете через get метод, тогда плюс ( ) является проблемой в URL и заменяется пробелом. Вам необходимо закодировать параметры перед передачей, чтобы он не удалял .

Ответ №2:

поместите двойные кавычки в вашу переменную $ eamil, как показано ниже. это может работать:

 $userDetails = DB::table('users')->select('id', 'firstname', 'lastname', 'email', 'password', 'role', 'confirm', 'status')->where('email',"$email")->first();
 

Комментарии:

1. . это не проблема с запросом. проблема с электронной почтой.$request-> input (’email’) обрезать плюс в электронной почте

2. это означает, что laravel проверяет электронное письмо, удаляя знак плюс, а значение, отображаемое из $request-> input(’email’), является vision myvison@gmail.com и не видение myvison@gmail.com ?