Regex xác thực email PHP

Để làm cho một câu chuyện dài trở nên ngắn gọn, phần lớn các đoạn mã regex trên Internet là không chính xác. Hầu hết chúng đều quá đơn giản và không được trang bị đầy đủ để giải quyết thỏa đáng một thứ phức tạp như địa chỉ email.

Trong khi tìm kiếm trên Google các cụm từ như “Ví dụ về biểu thức chính quy email xác thực PHP”, chúng tôi nhận thấy rằng khoảng 60-70% kết quả được liệt kê là rất tệ. Nhiều trong số các trang web đoạn mã PHP này và các diễn đàn trợ giúp chứa các ví dụ về biểu thức chính quy xấu sẽ thực sự từ chối các địa chỉ email hợp lệ

Nếu bạn muốn xác thực địa chỉ email trong PHP, thì bạn có thể sử dụng hàm filter_var

Hàm filter_var sử dụng chính biểu thức chính quy. Tuy nhiên, biểu thức chính quy mà filter_var sử dụng phức tạp hơn nhiều [và được cung cấp đầy đủ thông tin] so với phần lớn các ví dụ mà bạn sẽ tìm thấy trôi nổi trên Internet

Hãy xem ví dụ sau

if[filter_var[$emailAddress, FILTER_VALIDATE_EMAIL]] {
     //The email address is valid.
} else{
     //The email address is invalid.
}

So sánh mã ở trên với ví dụ này mà chúng tôi đã tìm thấy trên một bài viết khác và bạn sẽ thấy rằng FILTER_VALIDATE_EMAIL chính xác hơn rất nhiều khi nói đến các thông số kỹ thuật email được đặt trong RFC 822

if [!preg_match["/[-0-9a-zA-Z.+_][email protected][-0-9a-zA-Z.+_]+.[a-zA-Z]{2,4}/", $emailAddress]]{
    //Email address is invalid.
}

Bạn có thể nói rằng mã regex ở trên không đầy đủ chỉ bằng cách nhìn vào nó ngắn gọn. Nếu bạn nhìn vào bất kỳ ví dụ regex nào cố gắng trung thực với RFC 822, thì bạn sẽ thấy rằng chúng dài hơn khoảng 1.000 lần

Không xác thực địa chỉ email

Một cách tiếp cận phổ biến khác là hoàn toàn không xác thực địa chỉ email

Bởi vì ngay cả biểu thức chính quy đằng sau filter_var cũng có những hạn chế của nó, nên nhiều nhà phát triển cho rằng bạn nên xác thực thông qua một liên kết được gửi đến email của người dùng

Ví dụ

  1. Một người dùng đăng ký vào trang web của bạn
  2. Tạo mã thông báo cho người dùng đó và sau đó gửi mã đó đến địa chỉ email của người dùng
  3. Nếu họ nhấp vào liên kết chứa mã thông báo, hãy đánh dấu địa chỉ email của họ là hợp lệ
  4. Cho đến khi liên kết được nhấp vào, cho rằng email không hợp lệ

Tất nhiên, không phải ai cũng thích ý nghĩ này. Điều này là do nhiều giải pháp lưu trữ có thể giới hạn số lượng email mà ứng dụng của bạn có thể gửi mỗi giờ

Điều này đặc biệt đúng đối với các giải pháp lưu trữ được chia sẻ;

Cũng có những nhà phát triển đơn giản là không quan tâm đến những người có địa chỉ email “kỳ quặc”, bất kể chúng có hợp lệ hay không. Ví dụ: bạn có khả năng bắt gặp bao nhiêu lần các địa chỉ email như “Email thử nghiệm, vui lòng bỏ qua. "@kiểm tra. com?

Rất có thể, đây là lần đầu tiên bạn nhìn thấy một địa chỉ email có dấu cách, dấu chấm than và dấu ngoặc kép trong đó

Quan điểm của chúng tôi?

Xác thực email trong PHP có thể được thực hiện theo nhiều cách khác nhau. Nói chung, một trang web sẽ có xác thực phía máy khách

Tôi thích cả xác thực phía máy khách và máy chủ. Nó không chỉ áp dụng cho email mà còn cho tất cả các đầu vào nhận được từ người dùng cuối. Nó sẽ làm cho trang web mạnh mẽ hơn

Xác thực email hoặc đầu vào khác của người dùng là bước phòng ngừa cơ bản trước khi xử lý

Trong bài viết này, chúng ta sẽ xem cách xác thực email ở phía máy chủ. PHP cung cấp nhiều giải pháp thay thế khác nhau để xác thực email với các hàm và hằng số tích hợp sẵn. Một số trong số họ được liệt kê dưới đây

Các cách xác thực email trong PHP

  1. Sử dụng FILTER_VALIDATE_EMAIL
  2. Sử dụng khớp mẫu với biểu thức chính quy
  3. Bằng cách xác thực tên miền từ địa chỉ email

Ví dụ nhanh sau đây sử dụng bộ lọc PHP FILTER_VALIDATE_EMAIL. Đây là phương pháp tốt nhất để xác thực email trong PHP

ví dụ nhanh


Hãy cho chúng tôi xem các phương pháp khác để xác thực email bằng tập lệnh PHP

Sử dụng FILTER_SANITIZE_EMAIL để khử trùng đầu vào

FILTER_SANITIZE_EMAIL được sử dụng để xóa dữ liệu email do người dùng gửi

Trong ví dụ này, $email được mã hóa cứng bằng một địa chỉ email mẫu. Bạn có thể cung cấp đầu vào email từ dữ liệu biểu mẫu được đăng lên PHP bằng phương thức GET hoặc POST

Nó thêm một bước trước để làm sạch dữ liệu email trước khi xác thực định dạng của nó. Để xác thực định dạng của dữ liệu email đã được làm sạch, nó sử dụng FILTER_VALIDATE_EMAIL

lọc-vệ sinh-email. php


Sử dụng khớp mẫu với biểu thức chính quy

Nếu bạn đang mong đợi một mẫu biểu thức chính quy để xác thực định dạng email, mã ví dụ này sẽ giúp ích

Mã này có mẫu biểu thức chính quy trong một biến và được sử dụng để xác thực email bằng PHP preg_match[]

Trong PHP, preg_match[] dùng để khớp mẫu với một chủ đề nhất định là địa chỉ email tại đây

Mã này có hàm validateWithRegex[] để xử lý xác thực email PHP. Nó áp dụng chuyển đổi chuỗi email đầu vào thành chữ thường và cắt bớt trước khi áp dụng preg_match[]

Sau đó, nó trả về giá trị boolean true nếu tìm thấy kết quả khớp cho mẫu biểu thức chính quy email

email-regex. php


Bằng cách xác thực tên miền từ chuỗi email

Phương pháp này là một phương pháp rất đơn giản để xác thực email. Nó xác thực email bằng cách đảm bảo tính hợp lệ của DNS máy chủ

Nó sử dụng hàm checkdnsrr[] của PHP để xác thực DNS theo tên máy chủ hoặc địa chỉ IP của trang web

Hàm này trả về giá trị boolean true nếu máy chủ có bất kỳ bản ghi DNS nào được tìm thấy. Và do đó, email trong máy chủ đó có thể được coi là ở định dạng hợp lệ

Làm cách nào để xác thực email bằng regex trong PHP?

chức năng php checkemail[$str] { return [. preg_match["/^[[a-z0-9\+_\-]+][\. [a-z0-9\+_\-]+]*@[[a-z0-9\-]+\. ]+[ a-z]{2,6}$/ix", $str]] ?

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

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

Email có thể được xác thực bằng regex không?

Regex cung cấp khả năng xác thực cấu trúc của địa chỉ email . Nó có thể được xử lý bằng một hoặc hai dòng mã và có thể dễ dàng điều chỉnh để xử lý nhiều biến thể của các tham số khác nhau. Tuy nhiên, một điều cần lưu ý là nó chỉ có thể kiểm tra cấu trúc của một địa chỉ email.

Làm cách nào để kiểm tra xem một chuỗi có phải là email PHP không?

Email xác thực PHP. Sử dụng FILTER_VALIDATE_EMAIL . using the filter_var[] function and passing the given email and filter id “FILTER_VALIDATE_EMAIL” as arguments.

Chủ Đề