#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 ?