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é
4 Réponses :
Il semble que la validation fonctionne comme prévu. Merci d'avoir lu!
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 .
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
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;
});
c'est un format d'adresse e-mail valide. une regex ne peut pas faire grand-chose