Bộ lọc để xác thực địa chỉ email trong PHP là gì?

Hàm PHP này nhằm mục đích xác thực và vệ sinh dữ liệu. Nó có khả năng lọc một biến duy nhất với một bộ lọc cụ thể. Hai phần dữ liệu được bao gồm trong đó. biến cần kiểm tra và cách kiểm tra áp dụng

Biểu thức chính quy preg_match[] nhằm mục đích tìm kiếm chuỗi cho một mẫu. True sẽ được trả về khi mẫu ở đó, và ngược lại, false

Trong bài viết này, chúng ta sẽ tìm hiểu cách xác thực email bằng biểu thức chính quy PHP. Chúng ta sẽ tìm hiểu các phương pháp khác nhau để xác thực địa chỉ email trong PHP

Phương pháp1

Hàm preg_match[] kiểm tra đầu vào khớp với các mẫu bằng biểu thức chính quy

Ví dụ

Bản thử trực tiếp

đầu ra

Valid email address.

Trong ví dụ trên, hàm PHP preg_match[] đã được sử dụng để tìm kiếm chuỗi cho một mẫu và toán tử bậc ba PHP đã được sử dụng để trả về giá trị đúng hoặc sai dựa trên giá trị trả về preg_match

Thật không may, việc xác minh chính xác địa chỉ email không phải là một nhiệm vụ dễ dàng, vì vậy chúng tôi đã tổng hợp hướng dẫn chi tiết này để giúp bạn giải quyết. Vui lòng tự mình thử các đoạn mã chúng tôi đã chia sẻ để thử nghiệm xác thực địa chỉ email trong PHP. Ngoài ra, để thay thế, hãy xem hướng dẫn của chúng tôi để xác thực email bằng regex

Cách kiểm tra định dạng của địa chỉ email trong PHP

PHP vốn cung cấp một loạt hàm để xác thực và lọc, đáng chú ý nhất là hàm filter_var[], có thể xác thực định dạng địa chỉ email

Hàm filter_var[] chấp nhận 3 tham số

  • Tham số đầu tiên là biến để xác thực
  • Tham số thứ hai xác định loại bộ lọc sẽ được áp dụng. Chức năng này cho phép bạn kiểm tra định dạng của địa chỉ IP, tên miền và nhiều định dạng khác, bao gồm cả địa chỉ email. Tài liệu cung cấp danh sách tất cả các bộ lọc có thể sử dụng
  • Tham số thứ ba cho phép bạn chỉ định các tùy chọn sẽ xác định hoạt động của hàm filter_var[]. Các tùy chọn này phụ thuộc vào loại bộ lọc đang được sử dụng

Để sử dụng filter_var[] để thực hiện xác thực định dạng email, tham số thứ hai phải được đặt thành FILTER_VALIDATE_EMAIL. Nếu bạn biết rằng địa chỉ email để xác thực có chứa các ký tự Unicode, thì bạn cũng phải chỉ định tùy chọn FILTER_FLAG_EMAIL_UNICODE làm tham số thứ ba. Đây là hai ví dụ


// Example with US characters only
$address = 'john.doe@email.com';
if[filter_var[$address, FILTER_VALIDATE_EMAIL]] {
  echo 'Valid!';
} else {
  echo 'Not valid :[';
}

// Example with Unicode characters
$address = 'Потапов@email.com';
if[filter_var[$address, FILTER_VALIDATE_EMAIL, FILTER_FLAG_EMAIL_UNICODE]] {
  echo 'Valid!';
} else {
  echo 'Not valid :[';
}

Tuy nhiên, nhìn vào chức năng trên GitHub sẽ thấy ngay rằng việc kiểm tra định dạng địa chỉ email sẽ không hoạt động trong mọi trường hợp. Đây là bình luận của nhà phát triển. Regex này không xử lý các bình luận và khoảng trắng gấp

Thật vậy, ngay cả khi hiếm, các khoảng trắng vẫn được cho phép trong một địa chỉ email miễn là chúng được mã hóa và trong trường hợp này, giống như các trường hợp tương tự khác, hàm có thể cung cấp một phủ định sai [cho biết rằng địa chỉ email không hợp lệ, trong khi nó

Xác thực email bằng hàm filter_var[] của PHP

Tuy nhiên, xác thực định dạng địa chỉ là không đủ. Để tập lệnh xác thực dữ liệu biểu mẫu có hiệu lực, tập lệnh phải kiểm tra xem địa chỉ email có thực sự tồn tại không

Ví dụ: địa chỉ email john. doe@donteventrytofindthis. máy chủ, hoặc thậm chí đơn giản hơn john. doe@mgail. com, mặc dù có định dạng hợp lệ, sẽ không tồn tại. Việc xác thực chỉ dựa trên hàm filter_var[] sẽ không phát hiện ra lỗi

Để triển khai tập lệnh xác minh như vậy, cần phải viết logic phức tạp để kiểm tra sự tồn tại của tên miền, sau đó truy vấn các bản ghi của nó để xác định xem các trường MX có được điền chính xác hay không và cuối cùng kiểm tra xem máy chủ SMTP có phản hồi chính xác không. Có thể dễ dàng hình dung, đây là một nhiệm vụ nặng nề

Giải pháp xác minh email hiệu quả nhất với PHP. sử dụng API Tóm tắt

Khi quá khó để phát triển một giải pháp hiệu quả, người ta phải chuyển sang các dịch vụ có sẵn trên Internet và lý tưởng nhất là chọn một trong những API xác thực email tốt nhất

Tóm tắt cung cấp API miễn phí cho phép xác minh địa chỉ email, xác thực định dạng của chúng và kiểm tra xem tên miền có thể định tuyến được không [nói cách khác. nó kiểm tra xem máy chủ có tồn tại không]. API cũng cho biết liệu địa chỉ email có phải từ dịch vụ email dùng một lần không cần nhận dạng để sử dụng hay không

Để sử dụng API trừu tượng, hãy tạo tài khoản và nhận khóa API riêng của bạn. Sau đó, việc sử dụng API đơn giản như một cuộc gọi qua curl, như thế này

Không còn nhu cầu trong PHP để tạo các biểu thức chính quy của riêng bạn để cố gắng xác thực địa chỉ email; . Điều này có sẵn từ PHP 5. 2. 0

Cập nhật ngày 23 tháng 7 năm 2010

Như đã chỉ ra trong một bình luận trên trang này, e. g. chris@example sẽ xác thực mặc dù đây không phải là miền thông thường. Tuy nhiên, phần tên miền của địa chỉ email không thực sự cần chứa dấu chấm [e. g. máy chủ cục bộ]. Trong sử dụng thực tế, bạn thường muốn đảm bảo phần tên miền bao gồm một dấu chấm, vì vậy tôi đã viết một bài đăng cập nhật có thêm biểu thức chính quy để kiểm tra điều này

  • Xác thực email PHP với filter_var – đã cập nhật

Xác thực địa chỉ email bằng filter_var

Hàm filter_var chấp nhận ba tham số nhưng để kiểm tra địa chỉ email thì chỉ cần hai tham số đầu tiên. Tham số đầu tiên là dữ liệu cần lọc, trong trường hợp này là địa chỉ email và tham số thứ hai là loại bộ lọc, trong trường hợp này là FILTER_VALIDATE_EMAIL

hàm filter_var trả về dữ liệu đã lọc hoặc sai nếu bộ lọc bị lỗi. Do đó, có thể thực hiện kiểm tra đối với một địa chỉ email hợp lệ bằng cách kiểm tra xem có bất kỳ thứ gì được trả về như vậy không

if[filter_var["chris@example.com", FILTER_VALIDATE_EMAIL]] {
    // it's valid so do something
}
else {
    // it's not valid so do something else
}

Dưới đây là một số ví dụ khác

// test good email address
echo filter_var["chris@example.com", FILTER_VALIDATE_EMAIL] ? "goodn" : "badn";
// test good email address
echo filter_var["chris@a.b.c.example.com", FILTER_VALIDATE_EMAIL] ? "goodn" : "badn";
// not allowed . before @
echo filter_var["chris.@example.com", FILTER_VALIDATE_EMAIL] ? "goodn" : "badn";
// not allowed . in domain part
echo filter_var["chris@example..com", FILTER_VALIDATE_EMAIL] ? "goodn" : "badn";
// not allowed . after @
echo filter_var["chris@.example.com", FILTER_VALIDATE_EMAIL] ? "goodn" : "badn";
// not allowed double @
echo filter_var["chris@@example.com", FILTER_VALIDATE_EMAIL] ? "goodn" : "badn";
// not allowed @ more than once anywhere
echo filter_var["chris@exa@mple.com", FILTER_VALIDATE_EMAIL] ? "goodn" : "badn";
// must have @
echo filter_var["chris#example.com", FILTER_VALIDATE_EMAIL] ? "goodn" : "badn";

Và đầu ra từ trên

good
good
bad
bad
bad
bad
bad
bad

Kiểm tra tên miền hợp lệ

Một số người đã hỏi tôi cách kiểm tra xem miền có hợp lệ hay không, như một phần của việc kiểm tra tính hợp lệ của địa chỉ email. Một cách để làm điều đó là thực hiện tra cứu bản ghi MX trên miền [với dự phòng là tra cứu bản ghi A]. Tôi sẽ không tự mình làm việc này, nhưng đã viết một bài về cách lấy địa chỉ IP của máy chủ thư bằng PHP để giúp mọi người nếu họ muốn

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

Thư viện xác minh email PHP .
Xác thực định dạng của địa chỉ email
Nhận bản ghi MX của tên miền của địa chỉ email
Kết nối với máy chủ SMTP bằng bản ghi MX
Dựa trên mã phản hồi. Kiểm tra xem địa chỉ email người nhận đã cung cấp có hợp lệ không. Kiểm tra xem tên miền của người dùng email có tồn tại không

Làm thế nào xác thực email trong PHP giải thích với ví dụ?

Ví dụ.

Filter_validate_url trong PHP là gì?

Bộ lọc FILTER_VALIDATE_URL xác thực URL . cờ có thể. FILTER_FLAG_SCHEME_REQUIRED - URL phải tuân thủ RFC [như http. // ví dụ] FILTER_FLAG_HOST_REQUIRED - URL phải bao gồm tên máy chủ [như http. //www. ví dụ. com]

Filter_sanitize_email là gì?

Bộ lọc FILTER_SANITIZE_EMAIL xóa tất cả các ký tự không hợp lệ khỏi địa chỉ email .

Chủ Đề