2017-02-16 2 views
0

Im, создающий опрос, отправленный по электронной почте, и в основном приложение записывает пользовательские данные на основе электронной почты пользователя, если письмо не присутствует в маршруте, невозможно заполнить опрос, но я не совсем уверен, что если я сделаю это правильно, а также для обеспечения безопасности, возможно, я должен иметь какую-то проверку относительно электронной почты. Может кто-нибудь подскажет мне, что такое лучшая практика или способ, которым я занимаюсь, уже хорошо?Validation email on url

URL, которые входят пользователи, как:

http://domain.com/surveys/23/[email protected]/show 

Вот мой код:

Маршрут:

Route::get('surveys/{id}/{email}/show/', '[email protected]'); 

Контроллер:

public function show($id,$email) 
    { 

     $survey = Survey::find($id); 
     $email = $email; 

     return view('admin.surveys.show', compact('survey','email')); 
    } 

Вид:

Html 
... 

@if(!empty($email)) 
show the survey form 

@else 
A message saying is not possibile fill without a email 
@endif 

Примечание: опрос является частью системы бюллетеней и не может иметь никакой интеграции между ними.

+0

использовать валидатор в Laravel для проверки полей ввода .. – Sona

+0

есть isnt нет полей ввода ... – Pedro

ответ

1

Определенно, вы должны проверить, предоставлено ли электронное письмо. В контроллере вы должны сделать проверку, как это:

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

Пример выше, убедитесь, что электронная почта была предоставлена ​​(обязательно), если на самом деле является адрес электронной почты и если он существует в базе данных (пользователи таблицы, столбец электронной почты).

Подробнее об этом можно узнать в documentation. На этой странице вы также можете проверить все доступные правила, если я пропустил все, что можно было использовать.

EDIT: Пожалуйста, не забудьте добавить «Request $ запрос» в качестве параметра метода, например, так:

public function show(Request $request, $id,$email) {...} 
+0

Спасибо, но я думаю, когда я вставил запрос $ request, маршрут остановился, он дает мне ошибку «ERR_TOO_MANY_REDIRECTS» на странице – Pedro

+0

@Pedro Это означает, что у вас, вероятно, есть цикл перенаправления. Вы также можете попробовать решение jeroenFs, однако я считаю, что результат будет таким же. – Laran

0

Что касается Larans sugegstion впрыснуть запрос, а .. Может быть, вам это не нужно в методе показа. Если вы чувствуете, что портит с кодом, возможно, вводить его в конструкторе ...

private $request; 

public function __construct(Request $request) 
     { 
      $this->request = $request; 
     } 

И делать проверку в методе шоу,