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

Để đảm bảo rằng biến $email chứa địa chỉ email hợp lệ, bạn cần có hàm filter_var()

filter_var() là một hàm PHP thực hiện kiểm tra xác thực và khử trùng trên các biến

Để thông báo cho filter_var() rằng bạn muốn xác thực địa chỉ email, bạn cần sử dụng cờ FILTER_VALIDATE_EMAIL

filter_var() trả về true nếu email hợp lệ, ngược lại là false

Đây là cách sử dụng nó

$email = '[email protected]';
if (filter_var($email, FILTER_VALIDATE_EMAIL)) {
   
   echo $email . ' is a valid email address.';
}
else {
   
   echo $email . ' is NOT a valid email address.';
}

[email protected] is a valid email address.

filter_var() từ chối các địa chỉ email không có định dạng “tên@miền” hợp lệ hoặc chứa các ký tự không được phép trong địa chỉ email

Dưới đây là một số ví dụ về địa chỉ hợp lệ và không hợp lệ

$emails = [
   '[email protected]',  // Valid address
   'name_with_\'[email protected]',  // Valid: single quotes are allowed
   '@mydomain.com',  // Not valid: missing name
   'name@',  // Not valid: missing domain
   'name with [email protected]',  // Not valid: spaces are not allowed
   'name_with_"[email protected]', // Not valid: double quotes are not allowed
   'name1@[email protected]' // Not valid: too many "@"
];
foreach ($emails as $email) {
   
   echo $email . ' --> ';
   
   if (filter_var($email, FILTER_VALIDATE_EMAIL)) {
      
      echo 'valid.
'; } else { echo 'NOT valid.
'; } }
[email protected] --> valid.
name_with_'[email protected] --> valid.
@mydomain.com --> NOT valid.
name@ --> NOT valid.
name with [email protected] --> NOT valid.
name_with_"[email protected] --> NOT valid.
name1@[email protected] --> NOT valid.

Xác thực VS Vệ sinh

filter_var() cũng hỗ trợ cờ FILTER_SANITIZE_EMAIL

Nếu bạn sử dụng cờ này, filter_var() sẽ khử trùng chuỗi bằng cách xóa tất cả các ký tự không thể sử dụng trong địa chỉ email

Tuy nhiên, điều này không đảm bảo rằng kết quả là một địa chỉ email hợp lệ

Ngay cả khi một chuỗi không có ký tự không hợp lệ, nó vẫn có thể thiếu định dạng email phù hợp

Nhìn vào ví dụ sau

$address = 'invalid_address_£()@';
echo 'Address: ' . $address . '
'; /* Sanitization removes all the invalid characters.. */ $sanitizedAddress = filter_var($address, FILTER_SANITIZE_EMAIL); echo 'Sanitized address: ' . $sanitizedAddress . '
'; /* However, the address is still invalid. */ if (filter_var($sanitizedAddress, FILTER_VALIDATE_EMAIL)) { echo 'The address is valid.'; } else { echo 'The address is still not valid.'; }
Address: invalid_address_£()@
Sanitized address: invalid_address_@
The address is still not valid.

Như bạn có thể thấy, việc sử dụng cờ FILTER_SANITIZE_EMAIL không thực sự hữu ích vì bạn vẫn cần xác thực biến

Tôi khuyên bạn chỉ nên sử dụng cờ FILTER_VALIDATE_EMAIL để thay thế

Cách kiểm tra tên miền của email

Giả sử bạn đã xác thực thành công địa chỉ email của mình

Bây giờ, làm thế nào bạn có thể chắc chắn rằng một địa chỉ email thực sự tồn tại?

Cách duy nhất để biết chắc chắn là thử gửi email đến địa chỉ đó và phân tích câu trả lời của máy chủ SMTP

Tuy nhiên, thủ tục này phức tạp và không phải lúc nào cũng đáng tin cậy

Điều bạn có thể làm dễ dàng hơn nhiều là kiểm tra phần tên miền của email

Nếu miền hợp lệ, thì bạn có thể cho rằng email cũng hợp lệ

Trước tiên, bạn cần trích xuất tên miền từ địa chỉ

Đây là cách

$address = '[email protected]';
// Find the position of @
$atPos = mb_strpos($address, '@');
// Select the domain
$domain = mb_substr($address, $atPos + 1);

Tiếp theo, xác thực tên miền bằng hàm checkdnsrr()

Bạn cần truyền hai đối số cho hàm này

Đối số đầu tiên là tên miền theo sau là dấu chấm. Bạn cần thêm dấu chấm để tránh tra cứu sai

Đối số thứ hai là chuỗi “MX” báo cho hàm kiểm tra bản ghi DNS của email

Đây là mã

if (checkdnsrr($domain . '.', 'MX')) {
   
   echo 'Domain "' . $domain . '" is valid';
}
else {
   
   echo 'Domain "' . $domain . '" is not valid';
}

Domain "gmail.com" is valid

Giới thiệu về xác thực email giao diện người dùng

Xác thực email mặt trước được thực hiện trực tiếp trong trình duyệt

Ví dụ: nếu bạn đặt loại đầu vào của biểu mẫu HTML là “email”, trình duyệt sẽ tự động dừng việc gửi các địa chỉ email không hợp lệ

$email = '[email protected]';
if (filter_var($email, FILTER_VALIDATE_EMAIL)) {
   
   echo $email . ' is a valid email address.';
}
else {
   
   echo $email . ' is NOT a valid email address.';
}
0

Bạn cũng có thể sử dụng JavaScript để thực hiện kiểm tra xác thực

Xác thực giao diện người dùng rất hữu ích để nắm bắt các lỗi phổ biến của người dùng và cải thiện trải nghiệm người dùng

Tuy nhiên, bạn phải nhớ rằng xác thực giao diện người dùng không an toàn và bạn không bao giờ được dựa vào nó

Người dùng độc hại có thể dễ dàng bỏ qua bất kỳ loại xác thực giao diện người dùng nào và gửi các giá trị không hợp lệ tới tập lệnh back-end PHP của bạ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 cách nào để xác thực email trong PHP bằng ví dụ?

Làm cách nào để xác minh địa chỉ email đã được xác thực?

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

Bạn có thể xác thực địa chỉ email không?

Xác thực email là quy trình giúp xác định xem địa chỉ email có lỗi chính tả hay không . Về cơ bản, xác thực email nhằm mục đích phát hiện và ngăn chặn lỗi chính tả trong cú pháp email và địa chỉ email không hợp lệ được nhập vào bất kỳ biểu mẫu nào. Xác thực email chủ yếu (nhưng không phải luôn luôn) được thực hiện ở giao diện người dùng.