2
votes

Laravel Email Validation laissant passer "user @ hotmail"

J'utilise la validation de Laravel via FormRequest. Un extrait du code est ici. Il semble que la validation de laravel laisse passer les adresses e-mail telles que "user @ hotmail".

namespace App\Http\Requests;

use Illuminate\Foundation\Http\FormRequest;

class DirectorForm extends FormRequest
{
    public function rules()
    {
        return [
            'email' => 'required|email',
        ];
    }
}

il semble que la validation ci-dessus autorise "username @ hotmail", qui n'est pas une adresse e-mail valide.

Est-ce que je l'ai mal configuré


1 commentaires

c'est un format d'adresse e-mail valide. une regex ne peut pas faire grand-chose


4 Réponses :


0
votes

Il semble que la validation fonctionne comme prévu. Merci d'avoir lu!


0 commentaires

2
votes

En fait, user @ hotmail est une adresse e-mail valide, car user @ localhost peut également être une adresse e-mail valide.
Si vous souhaitez vérifier que si l'adresse e-mail contient également un TLD , vous pouvez essayer :

namespace App\Http\Requests;

use Illuminate\Foundation\Http\FormRequest;

class DirectorForm extends FormRequest
{
    public function rules()
    {
        return [
            'email' => 'required|regex:.+@.+\..+',
        ];
    }
}

Pour plus de règles de validation des e-mails regex, consultez cette réponse .


0 commentaires

1
votes

Utilisez l'expression régulière de: https://emailregex.com/

Et combiner avec la règle de regex Laravel: https://laravel.com/docs/ 5.8 / validation # rule-regex


0 commentaires

0
votes

Vous pouvez écrire une validation personnalisée pour un e-mail dans AppServiceProvider comme la méthode

Boot

public function rules()
    {
        return [
            'email' => 'required|email_address',
        ];
    }

Règles

Validator::extend('email_address', function ($attribute, $value, $parameters, $validator) {
            return (!preg_match("/^([a-z0-9\+_\-]+)(\.[a-z0-9\+_\-]+)*@([a-z0-9\-]+\.)+[a-z]{2,6}$/ix", $value)) ? FALSE : TRUE;
        });


0 commentaires