Hướng dẫn how can i validate an existing email address in php? - làm cách nào để xác thực địa chỉ email hiện có trong php?


Chương này cho thấy cách xác nhận tên, e-mail và URL.


PHP - Tên xác thực

Mã dưới đây cho thấy một cách đơn giản để kiểm tra xem trường Tên chỉ chứa các chữ cái, dấu gạch ngang, dấu nháy đơn và khoảng trắng. Nếu giá trị của trường Tên không hợp lệ, thì hãy lưu trữ thông báo lỗi:

$ name = test_input ($ _ post ["name"]); if (! preg_match ("/^[a-za-z- ']*$/", $ name)) {& nbsp; $ nameerr = "Chỉ các chữ cái và không gian trắng cho phép"; }
if (!preg_match("/^[a-zA-Z-' ]*$/",$name)) {
  $nameErr = "Only letters and white space allowed";
}

Hàm preg_match () tìm kiếm một chuỗi cho mẫu, trả về true nếu mẫu tồn tại và sai.


PHP - Xác thực e -mail

Cách dễ nhất và an toàn nhất để kiểm tra xem một địa chỉ email được hình thành tốt là sử dụng chức năng Filter_var () của PHP.

Trong mã bên dưới, nếu địa chỉ e-mail không được hình thành tốt, thì hãy lưu trữ thông báo lỗi:

$ email = test_input ($ _ post ["email"]); if (! filter_var ($ email, filter_validate_email)) {& nbsp; $ emailerr = "Định dạng email không hợp lệ"; }
if (!filter_var($email, FILTER_VALIDATE_EMAIL)) {
  $emailErr = "Invalid email format";
}


PHP - Xác thực URL

Mã bên dưới cho thấy một cách để kiểm tra xem cú pháp địa chỉ URL có hợp lệ không (biểu thức chính quy này cũng cho phép các dấu gạch ngang trong URL). Nếu cú ​​pháp địa chỉ URL không hợp lệ, thì hãy lưu trữ thông báo lỗi:

$ trang web = test_input ($ _ post ["trang web"]); if (! preg_match ("/\ b (? :( ?: https? | ftp): \/\/| www \.) [ 9+&@#\/%? = ~ _ |!:,.;]*[-a-z0-9+&@#\/%= ~ _ |] & nbsp; $ trang weberr = "URL không hợp lệ"; }
if (!preg_match("/\b(?:(?:https?|ftp):\/\/|www\.)[-a-z0-9+&@#\/%?=~_|!:,.;]*[-a-z0-9+&@#\/%=~_|]/i",$website)) {
  $websiteErr = "Invalid URL";
}



PHP - Tên xác thực, e -mail và URL

Bây giờ, kịch bản trông như thế này:

Thí dụ

// define variables and set to empty values
$nameErr = $emailErr = $genderErr = $websiteErr = "";
$name = $email = $gender = $comment = $website = "";

if ($ _server ["request_method"] == "post") {& nbsp; if (trống ($ _ post ["name"])) {& nbsp; & nbsp; & nbsp; $ nameerr = "Tên là bắt buộc"; & nbsp; } other {& nbsp; & nbsp; & nbsp; $ name = test_input ($ _ post ["name"]); & nbsp; & nbsp; & nbsp; // Kiểm tra nếu tên chỉ chứa các chữ cái và khoảng trắng & nbsp; & nbsp; & nbsp; if (! preg_match ("/^[a-za-z- ']*$/", $ name)) {& nbsp; & nbsp; & nbsp; & nbsp; & nbsp; $ nameerr = "Chỉ các chữ cái và không gian trắng cho phép"; & nbsp; & nbsp; & nbsp; } & nbsp; }
  if (empty($_POST["name"])) {
    $nameErr = "Name is required";
  } else {
    $name = test_input($_POST["name"]);
    // check if name only contains letters and whitespace
    if (!preg_match("/^[a-zA-Z-' ]*$/",$name)) {
      $nameErr = "Only letters and white space allowed";
    }
  }

& nbsp; if (trống ($ _ post ["email"])) {& nbsp; & nbsp; & nbsp; $ emailerr = "Email là bắt buộc"; & nbsp; } other {& nbsp; & nbsp; & nbsp; $ email = test_input ($ _ post ["email"]); & nbsp; & nbsp; & nbsp; // Kiểm tra xem địa chỉ e-mail có được hình thành tốt & nbsp; & nbsp; & nbsp; if (! filter_var ($ email, filter_validate_email)) {& nbsp; & nbsp; & nbsp; & nbsp; & nbsp; $ emailerr = "Định dạng email không hợp lệ"; & nbsp; & nbsp; & nbsp; } & nbsp; }
    $emailErr = "Email is required";
  } else {
    $email = test_input($_POST["email"]);
    // check if e-mail address is well-formed
    if (!filter_var($email, FILTER_VALIDATE_EMAIL)) {
      $emailErr = "Invalid email format";
    }
  }

& nbsp; if (trống ($ _ post ["trang web"])) {& nbsp; & nbsp; & nbsp; $ trang web = ""; & nbsp; } other {& nbsp; & nbsp; & nbsp; $ trang web = test_input ($ _ post ["trang web"]); & nbsp; & nbsp; & nbsp; // Kiểm tra xem cú pháp địa chỉ URL có hợp lệ không (biểu thức chính quy này cũng cho phép các dấu gạch ngang trong URL) & nbsp; & nbsp; & nbsp; if (! preg_match ("/\ b (? :( ?: https? | ftp): \/\/| www \.) [-a-z0-9+&@#\/%? = ~ _ |! :,.;]*[-a-z0-9+&@#\/%= ~ _ |]/i ", $ trang web)) {& nbsp; & nbsp; & nbsp; $ trang weberr = "URL không hợp lệ"; & nbsp; & nbsp; & nbsp; } & nbsp; }
    $website = "";
  } else {
    $website = test_input($_POST["website"]);
    // check if URL address syntax is valid (this regular expression also allows dashes in the URL)
    if (!preg_match("/\b(?:(?:https?|ftp):\/\/|www\.)[-a-z0-9+&@#\/%?=~_|!:,.;]*[-a-z0-9+&@#\/%=~_|]/i",$website)) {
      $websiteErr = "Invalid URL";
    }
  }

& nbsp; if (trống ($ _ post ["bình luận"])) {& nbsp; & nbsp; & nbsp; $ bình luận = ""; & nbsp; } other {& nbsp; & nbsp; & nbsp; $ bình luận = test_input ($ _ post ["bình luận"]); & nbsp; }
    $comment = "";
  } else {
    $comment = test_input($_POST["comment"]);
  }

& nbsp; if (trống ($ _ post ["giới tính"])) {& nbsp; & nbsp; & nbsp; $ giới tính = "Giới tính là bắt buộc"; & nbsp; } other {& nbsp; & nbsp; & nbsp; $ giới tính = test_input ($ _ post ["Giới tính"]); & nbsp; }}?>
    $genderErr = "Gender is required";
  } else {
    $gender = test_input($_POST["gender"]);
  }
}
?>

Chạy ví dụ »

Bước tiếp theo là chỉ ra cách ngăn biểu mẫu làm trống tất cả các trường đầu vào khi người dùng gửi biểu mẫu.



  • Cách kiểm tra định dạng của địa chỉ email trong PHP
  • Xác thực email với chức năng Filter_var () của PHP
  • Sử dụng API xác thực email

Như tất cả các nhà phát triển có kinh nghiệm đều biết, điều cần thiết là kiểm tra và xác nhận thông tin người dùng có thể nhập vào biểu mẫu web. Điều này thậm chí còn quan trọng hơn khi nói đến địa chỉ email, vì khi ai đó yêu cầu thông tin, bạn phải đảm bảo rằng địa chỉ email của họ là chính xác để họ có thể nhận được các bản tin bạn tạo bằng cách sử dụng trình tạo email của bạn hoặc câu trả lời cho yêu cầu của họ.

Đừng phát minh lại API của Wheel.abstract hiện đã sẵn sàng sản xuất.
Abstract's APIs are production-ready now.

Tóm tắt bộ API của API được xây dựng để giúp bạn tiết kiệm thời gian. Bạn không cần phải là một chuyên gia về xác thực email, định vị địa lý IP, v.v ... Chỉ cần tập trung vào việc viết mã thực sự có giá trị cho ứng dụng hoặc doanh nghiệp của bạn và chúng tôi sẽ xử lý phần còn lại.

Bắt đầu miễn phí

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

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

PHP tự cung cấp một loạt các chức năng để xác thực và lọc, đáng chú ý nhất là hàm filter_var (), có thể xác nhận đị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 cần xác thực.
  • Tham số thứ hai xác định loại bộ lọc được áp dụng. Chức năng cho phép bạn kiểm tra định dạng cho địa chỉ IP, tên miền và nhiều loại khác, bao gồm các địa chỉ email. Tài liệu cung cấp một 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, 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 = '';
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, một cái nhìn về mã nguồn của hàm filter_var () trên github cho thấy ngay lập tức rõ ràng 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à nhận xét của nhà phát triển: Regex này không xử lý các bình luận và gấp khoảng trắng

Thật vậy, ngay cả khi hiếm, khoảng trắng được phép trong một địa chỉ email miễn là chúng được nối lại, và trong trường hợp này, chức năng có thể cung cấp một âm tính giả (cho thấy địa chỉ email không hợp lệ, trong khi nó Là).

Xác thực email với chức năng Filter_var () của PHP

Tuy nhiên, xác nhận đị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, nó phải kiểm tra xem địa chỉ email có thực sự tồn tại không.

Ví dụ: địa chỉ email hoặc thậm chí đơn giản hơn, mặc dù có định dạng hợp lệ, sẽ không tồn tại. Một xác thực chỉ dựa trên hàm filter_var () sẽ không phát hiện lỗi.

Để thực hiện 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. Như người ta có thể dễ dàng tưởng tượng, đây là một nhiệm vụ nặng nề.

Giải pháp hiệu quả nhất để xác minh email với PHP: Sử dụng & NBSP; API trừu tượng

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 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 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 là từ dịch vụ email dùng một lần không cần nhận dạng hay không.

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


$api_key = 'your_key';
$email = '';

$ch = curl_init('https://emailvalidation.abstractapi.com/v1/?api_key='.$api_key.'&email='.$email);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HEADER, 0);
$data = curl_exec($ch);
curl_close($ch);

print_r($data);

API xác thực email của Tóm tắt đi kèm với các thư viện PHP, đoạn mã, hướng dẫn, v.v.

Bắt đầu miễn phí

Làm thế nào tôi có thể kiểm tra xem một địa chỉ email có hợp lệ trong PHP không?

Cách dễ nhất và an toàn nhất để kiểm tra xem một địa chỉ email được hình thành tốt là sử dụng chức năng Filter_var () của PHP.use PHP's filter_var() function.

Làm thế nào tôi có thể kiểm tra xem một địa chỉ email có hợp lệ không?

Cách kiểm tra xem địa chỉ email có hợp lệ không..
Phương pháp 1: Gửi email đến địa chỉ.Có lẽ cách đơn giản nhất làm thế nào để kiểm tra xem email có hợp lệ là gửi tin nhắn cho nó không.....
Phương pháp 2: Phục hồi 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 để gửi email?

Công cụ xác minh email: Sử dụng dịch vụ xác minh email để kiểm tra xem địa chỉ đã cho có hợp lệ hay không.Chỉ cần google 'trình xác minh email' và nhiều tùy chọn miễn phí và trả phí sẽ xuất hiện.Tùy chọn miễn phí có thể làm việc cho bạn nếu bạn có một vài email để kiểm tra và gửi email.

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

Thí dụ.if (filter_var($email, FILTER_VALIDATE_EMAIL)) { echo("$email is a valid email address"); } else{ echo("$email is not a valid email address"); } ?>