Laravel kiểm tra nếu email hợp lệ

Tính toàn vẹn và xác thực dữ liệu là những khía cạnh quan trọng của việc phát triển web và thu thập dữ liệu. Điều quan trọng là chúng tôi [với tư cách là nhà phát triển web] xác thực dữ liệu trước khi lưu trữ trong cơ sở dữ liệu. Ví dụ: hãy tưởng tượng rằng bạn đang xây dựng biểu mẫu cho một trang web mới mà khách truy cập có thể sử dụng để đăng ký nhận bản tin email mới của bạn. Tôi chắc chắn rằng bạn muốn đảm bảo rằng bất kỳ ai gửi biểu mẫu đều sử dụng địa chỉ email hợp lệ và không cố gắng thêm bất kỳ địa chỉ thư rác nào. Trong sách điện tử của tôi, Battle Ready Laravel, tôi thực sự đề cập đến cách bạn có thể tìm và cải thiện các điểm yếu khác như thế này trong các ứng dụng Laravel của mình

Chắc chắn, có những điều bạn có thể làm để xác minh email đó, chẳng hạn như gửi email xác nhận để khách truy cập xác nhận rằng họ thực sự muốn đăng ký. Nhưng bạn có thể thực sự muốn xác thực rằng email tồn tại trước khi bạn cố gắng gửi email xác nhận đó

Để làm điều này, bạn có thể sử dụng gói Laravel Mailbox Layer để thiết lập và chạy nhanh chóng

Tại sao không chỉ sử dụng các chức năng PHP tích hợp?

Như bạn đã biết, PHP và Laravel đi kèm với các phương thức có thể được sử dụng để xác thực email. Nhưng những phương pháp này phù hợp hơn để kiểm tra xem cấu trúc của địa chỉ email có đúng không

Ví dụ: giả sử rằng chúng tôi có địa chỉ email sau đây không tồn tại. i-do-not-exist@invalid. com. Nếu chúng tôi xác thực email này bằng cách sử dụng các hàm PHP tích hợp hoặc quy tắc xác thực 'email' của Laravel, thì nó sẽ vượt qua quá trình xác thực. Điều này có thể là do địa chỉ khớp với cấu trúc tiêu chuẩn mà bạn mong đợi đối với một địa chỉ email. Tuy nhiên, vì địa chỉ email không tồn tại, chúng tôi cho rằng việc xác thực không thành công

Vì những lý do này, chúng tôi có thể sử dụng gói Laravel Mailbox Layer để xác thực email, kiểm tra xem địa chỉ có thực sự tồn tại hay không và đảm bảo rằng địa chỉ đó đến từ một nguồn uy tín mà chúng tôi muốn cho phép thông qua. Ví dụ: chúng tôi có thể muốn bỏ qua mọi địa chỉ dùng một lần từ các dịch vụ như Mailinator

Nhận khóa API

Gói Lớp hộp thư của Laravel là một trình bao bọc cho API Lớp hộp thư. Vì vậy, để bắt đầu, bạn cần đăng ký trên trang web của họ và lấy khóa API mới. Khi bạn đã có khóa API của mình, bạn có thể thêm nó vào tệp

        

1composer require ashallendesign/laravel-mailboxlayer

8 của mình như được hiển thị bên dưới

        

1MAILBOX_LAYER_API_KEY=your-api-key-here

Cài đặt gói

Bây giờ chúng ta đã thêm khóa API vào tệp

        

1composer require ashallendesign/laravel-mailboxlayer

8, chúng ta có thể cài đặt gói bằng cách chạy lệnh sau trong thư mục gốc của dự án Laravel của chúng ta

        

1composer require ashallendesign/laravel-mailboxlayer

Xác thực Địa chỉ Email

Bây giờ chúng tôi đã sẵn sàng để bắt đầu xác thực email

Đối với các ví dụ sau, chúng tôi sẽ giả định rằng chúng tôi có một biểu mẫu đăng ký nhận bản tin trên một trang web

Vì vậy, hãy tưởng tượng rằng chúng ta có bộ điều khiển bên dưới. Hiện tại, nó xác thực địa chỉ email bằng quy tắc 'email' tích hợp sẵn của Laravel và sau đó gửi một công việc để hoàn tất quy trình đăng ký của khách truy cập

        

1use App\Jobs\CompleteNewsletterSubscription;

2use Illuminate\Http\JsonResponse;

3use Illuminate\Http\Request;

5class NewsletterSubscriptionController extends Controller

8 * Store a new newsletter subscriber.

13 public function store[Request $request]: JsonResponse

16 'email_address' => 'required|email'

19 CompleteNewsletterSubscription::dispatch[];

21 return response[]->json[['success' => true]];

Bây giờ, như tôi đã đề cập trước đó, làm điều này là được và sẽ kiểm tra để đảm bảo rằng địa chỉ email đã được gửi trong yêu cầu. Tuy nhiên, điều này sẽ không kiểm tra xem địa chỉ email có thực sự tồn tại hay không. Tất cả những gì nó làm là kiểm tra xem trường

        

1use App\Jobs\CompleteNewsletterSubscription;

2use Illuminate\Http\JsonResponse;

3use Illuminate\Http\Request;

5class NewsletterSubscriptionController extends Controller

8 * Store a new newsletter subscriber.

13 public function store[Request $request]: JsonResponse

16 'email_address' => 'required|email'

19 CompleteNewsletterSubscription::dispatch[];

21 return response[]->json[['success' => true]];

0 có ở đó không và chuỗi có tuân theo cấu trúc địa chỉ email không. Vì vậy, chúng ta có thể sử dụng gói Lớp hộp thư của Laravel tại đây để cải thiện phương pháp này và xác thực

Trong mã bên dưới, bạn có thể thấy cách chúng tôi đã sử dụng mặt tiền

        

1use App\Jobs\CompleteNewsletterSubscription;

2use Illuminate\Http\JsonResponse;

3use Illuminate\Http\Request;

5class NewsletterSubscriptionController extends Controller

8 * Store a new newsletter subscriber.

13 public function store[Request $request]: JsonResponse

16 'email_address' => 'required|email'

19 CompleteNewsletterSubscription::dispatch[];

21 return response[]->json[['success' => true]];

1 để bắt đầu mà không cần phải tạo một đối tượng mới theo cách thủ công hoặc sử dụng phép nội xạ phụ thuộc. Tuy nhiên, nếu bạn cảm thấy thoải mái hơn khi sử dụng các phương pháp đó, vui lòng sử dụng chúng

Sau khi chúng tôi chạy xác thực Laravel, sau đó chúng tôi chạy phương thức

        

1composer require ashallendesign/laravel-mailboxlayer

0 để yêu cầu API Lớp hộp thư và trả về kết quả trong một đối tượng
        

1composer require ashallendesign/laravel-mailboxlayer

1 mà chúng tôi có thể làm việc với

Chúng tôi có thể kiểm tra xem thuộc tính

        

1composer require ashallendesign/laravel-mailboxlayer

2 có phải là
        

1composer require ashallendesign/laravel-mailboxlayer

3 không. Nếu có, điều đó có nghĩa là địa chỉ không tồn tại và vì vậy chúng tôi có thể gửi lại lỗi cho khách truy cập để cho họ biết rằng địa chỉ không hợp lệ. Nếu địa chỉ là có thật, tài sản
        

1composer require ashallendesign/laravel-mailboxlayer

2 sẽ được trả lại là
        

1composer require ashallendesign/laravel-mailboxlayer

5

        

1use App\Jobs\CompleteNewsletterSubscription;

2use AshAllenDesign\MailboxLayer\Facades\MailboxLayer;

3use Illuminate\Http\JsonResponse;

4use Illuminate\Http\Request;

6class NewsletterSubscriptionController extends Controller

9 * Store a new newsletter subscriber.

14 public function store[Request $request]: JsonResponse

17 'email_address' => 'required|email'

20 $result = MailboxLayer::check[$request->email_address];

22 if [! $result->smtpCheck] {

23 abort[422, 'The email address is not valid.'];

26 CompleteNewsletterSubscription::dispatch[];

28 return response[]->json[['success' => true]];

Từ chối địa chỉ dùng một lần

Tùy thuộc vào trường hợp sử dụng dự án của bạn và nơi bạn có thể muốn sử dụng xác thực này, bạn có thể muốn từ chối bất kỳ địa chỉ dùng một lần nào. Ví dụ: thật đơn giản để lấy địa chỉ email cho một trang web như Mailinator mà bạn có thể sử dụng để gửi thư rác và bỏ qua khi không cần. Để biết thêm một chút thông tin về địa chỉ email dùng một lần, hãy xem Hướng dẫn dành cho người mới bắt đầu về địa chỉ email dùng một lần của Envato Tuts

Để mở rộng đoạn mã trên, chúng ta chỉ cần kiểm tra xem

        

1composer require ashallendesign/laravel-mailboxlayer

6 có phải là
        

1composer require ashallendesign/laravel-mailboxlayer

5 không. Nếu đó là
        

1composer require ashallendesign/laravel-mailboxlayer

5 thì chúng tôi biết rằng địa chỉ này chỉ dùng một lần và chúng tôi có thể từ chối quyền truy cập. Hãy xem nó trông như thế nào trong phương thức điều khiển của chúng ta

        

1composer require ashallendesign/laravel-mailboxlayer

3

Thêm bộ nhớ đệm để cải thiện hiệu suất

Mỗi lần bạn đưa ra yêu cầu đối với API lớp hộp thư, bạn sẽ tiến thêm một bước để đạt đến giới hạn điều tiết API của mình. Vì vậy, bạn càng thực hiện ít yêu cầu thì càng tốt. Vì lý do này, có thể hữu ích khi kích hoạt cơ chế bộ nhớ đệm được tích hợp sẵn trong gói. Bằng cách này, bất cứ khi nào một yêu cầu được thực hiện, kết quả sẽ được lưu trong bộ đệm. Bằng cách này, bạn sẽ không cần phải thực hiện một yêu cầu khác trong tương lai cho cùng một địa chỉ

Để thêm bộ nhớ đệm vào gói, đơn giản như sử dụng phương pháp

        

1composer require ashallendesign/laravel-mailboxlayer

9 trước khi chúng tôi chạy
        

1composer require ashallendesign/laravel-mailboxlayer

0. Điều này hướng dẫn gói lưu trữ kết quả trong bộ đệm của bạn sau khi được tải xuống từ API. Điều này có nghĩa là lần tới khi bạn muốn xác thực cùng một địa chỉ email đó, gói sẽ kiểm tra bộ đệm của bạn trước để xem liệu kết quả được lưu trong bộ đệm đã tồn tại ở đó chưa. Nếu có, nó sẽ trả lại. Nếu không, một yêu cầu khác sẽ được thực hiện

Tại đây, bạn có thể thấy cách chúng tôi mở rộng mã phương thức của bộ điều khiển để sử dụng bộ nhớ đệm

        

1composer require ashallendesign/laravel-mailboxlayer

6

Tính năng cụ thể này có thể không quá hữu ích đối với những thứ như biểu mẫu đăng ký bản tin như đã đề cập ở trên. Điều này là do không có khả năng ai đó sẽ cố gắng đăng ký nhận bản tin nhiều lần. Nhiều khả năng đó sẽ là hành động một lần

Vì vậy, tính năng này sẽ có lợi hơn cho những thứ như nhập CSV vào hệ thống Laravel của bạn. Để giúp hiển thị các lợi ích của tính năng này, hãy tưởng tượng rằng bạn cần nhập tệp CSV có 1.000 người dùng vào một hệ thống và địa chỉ email của họ không phải là duy nhất. Giả sử rằng trong số 1.000 người dùng, thực tế chỉ có 600 địa chỉ duy nhất. Như bạn đã đoán, sẽ tốt hơn nhiều nếu chỉ phải thực hiện 600 yêu cầu API thay vì 1.000. Nó sẽ làm giảm cơ hội đạt đến giới hạn API và nó cũng sẽ cải thiện hiệu suất vì việc tìm nạp từ bộ nhớ cache rất tốt và nhanh chóng

Tiếp theo là gì?

Nếu bạn nghĩ rằng bạn có thể đang sử dụng loại xác thực email này trong nhiều phần của ứng dụng của mình, bạn nên tạo quy tắc xác thực Laravel của riêng mình. Bằng cách tạo một cái, sau đó bạn có thể sử dụng nó trong phương pháp

        

1use App\Jobs\CompleteNewsletterSubscription;

2use Illuminate\Http\JsonResponse;

3use Illuminate\Http\Request;

5class NewsletterSubscriptionController extends Controller

8 * Store a new newsletter subscriber.

13 public function store[Request $request]: JsonResponse

16 'email_address' => 'required|email'

19 CompleteNewsletterSubscription::dispatch[];

21 return response[]->json[['success' => true]];

1 của mình để giữ cho mã KHÔ. Điều đó có nghĩa là sau đó bạn có thể xóa các câu lệnh 'nếu' bổ sung trong mã của mình và tự tin rằng tất cả quá trình xác thực đều được xử lý theo quy tắc xác thực của riêng bạn. Điều này cũng có nghĩa là nếu bạn muốn xác thực email ở một nơi khác trong ứng dụng của mình, bạn có thể đưa quy tắc vào trình xác thực mới của mình để thiết lập và chạy nhanh chóng

Hãy để lại nhận xét về bài viết nếu bạn muốn có hướng dẫn tiếp theo cho hướng dẫn này về cách tạo loại quy tắc xác thực email này

Kiểm tra nó trên GitHub

Tất cả mã và tài liệu đầy đủ cho gói này đều có thể được tìm thấy trong kho lưu trữ của gói trên GitHub. Vui lòng đến đó và kiểm tra mã hoặc thực hiện bất kỳ đóng góp nào để cải thiện nó

Làm cách nào để kiểm tra xem tên miền email có hợp lệ không?

Cách kiểm tra xem địa chỉ email có hợp lệ hay không .
Phương pháp 1. Gửi Email đến Địa chỉ. Có lẽ cách đơn giản nhất để kiểm tra xem một email có hợp lệ hay không là gửi tin nhắn cho nó. .
Phương pháp 2. Khôi phục mật khẩu. .
Phương pháp 3. Thực hiện tra cứu địa chỉ IP. .
Phương pháp 4. Tìm kiếm địa chỉ trong Google. .
Phương pháp 5. Trình kiểm tra email

Làm cách nào để xác thực địa chỉ email trong PHP?

PHP - Xác thực Email . use PHP's filter_var[] function.

Làm cách nào để kiểm tra xem địa chỉ email có hợp lệ trong asp net không?

Cách xác thực địa chỉ email trên ASP. NET trong 4 bước .
Bước 1. Tạo một ASP hỗ trợ Web Forms. dự án NET. .
Bước 2. Đặt một tệp ASPX mới. .
Bước 3. Thêm một hộp văn bản bằng ASP. Điều khiển hộp văn bản NET. .
Bước 4. Sử dụng ASP. NET Regex Validator để tìm đầu vào địa chỉ email không hợp lệ

Chủ Đề