在网址上验证电子邮件

时间:2017-02-16 11:52:23

标签: php laravel security laravel-5

我正在创建一个由时事通讯电子邮件发送的调查,基本上应用程序会根据用户的电子邮件记录用户数据,如果电子邮件不存在于该路线中是不可能填写调查的,但我不完全确定如果我正确地做到这一点并且出于安全目的,也许我应该对电子邮件进行某种验证。有人可以告诉我什么是最好的做法或者我正在做的方式已经好了吗?!

用户输入的网址如下:

http://domain.com/surveys/23/email@hotmail.com/show

这是我的代码:

路线:

Route::get('surveys/{id}/{email}/show/', 'SurveyController@show');

控制器:

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

注意:调查完全是时事通讯系统的一部分,它们之间不能有任何形式的整合。

2 个答案:

答案 0 :(得分:1)

当然,您应该验证是否提供了电子邮件。在控制器中你应该像这样检查:

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

上面的示例将确保提供电子邮件(必需),如果实际上是电子邮件,并且数据库中存在电子邮件(表用户,列电子邮件)。

您可以在documentation中详细了解相关信息。如果我错过了任何可以使用的规则,您还可以在此页面上查看所有可用的规则。

编辑:还请记得添加“请求$请求”作为方法参数,如下所示:

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

答案 1 :(得分:0)

关于Larans sugegstion也要注入请求..也许你在show方法中不需要它。如果您觉得它与您的代码混淆,可能会将其注入构造函数中......

private $request;

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

并在show方法中进行验证,