2017-02-16 99 views
0

我創建了通過電子郵件發送的調查,基本上應用程序會根據用戶的電子郵件記錄用戶數據,如果電子郵件不存在於路線中,則無法填寫調查,但即時通訊不太確定,如果即時通訊正確的方式,也爲了安全的目的,也許我應該有一些關於電子郵件的驗證。有人能告訴我什麼是最佳做法,或者我做的方式是否已經很好?!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

使用驗證器,用於驗證輸入字段.. – Sona

+0

有沒有輸入字段... – Pedro

回答

1

當然,您應該驗證是否提供了電子郵件。在控制你應該做的檢查是這樣的:上面

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

例將確保郵件已提供(必填),如果實際上是一個電子郵件,如果它存在於數據庫(表的用戶,列電子郵件)。

你可以在documentation瞭解更多。在此頁面上,如果我錯過了任何可用的規則,您還可以查看所有可用的規則。

編輯:也請記得添加「請求$要求」作爲方法的參數,像這樣:

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

謝謝,但我想當我插入請求$請求路由停止工作,給我一個「ERR_TOO_MANY_REDIRECTS」錯誤頁面 – Pedro

+0

@Pedro這意味着你可能有重定向循環。您也可以嘗試jeroenFs解決方案,但是我相信結果將是相同的。 – Laran

0

關於Larans sugegstion注入請求以及..也許你並不需要它在展示方法中。如果你覺得你的代碼弄亂,也許把它注射在構造函數...

private $request; 

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

,並做驗證在你的表演方法,在laravel