2017-02-16 118 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

相关问题