Hướng dẫn email validation server side php - php phía máy chủ xác thực email


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ó ba RFC đặt nền tảng cho "Định dạng tin nhắn Internet".

  1. RFC 822
  2. RFC 2822 (thay thế RFC 822)
  3. RFC 5322 (thay thế RFC 2822)

Tuy nhiên, RFC 5322 xác định ID e-mail và cấu trúc đặt tên của chúng theo cách kỹ thuật nhất. Điều đó phù hợp hơn khi đặt nền tảng cho một tiêu chuẩn Internet đủ tự do để cho phép tất cả các trường hợp sử dụng, đủ bảo thủ để ràng buộc nó trong một số chủ nghĩa hình thức.

Tuy nhiên, yêu cầu xác thực e -mail từ cộng đồng nhà phát triển phần mềm, có những nhu cầu sau đây -

  • để ngăn chặn những kẻ gửi thư rác không mong muốn
  • Để đảm bảo người dùng không mắc lỗi vô tình
  • để đảm bảo rằng ID e-mail thuộc về người thực tế nhập nó

Họ không chính xác quan tâm đến việc thực hiện định nghĩa toàn diện về mặt kỹ thuật cho phép tất cả các biểu mẫu (địa chỉ IP, bao gồm ID cổng và tất cả) ID e-mail. Giải pháp phù hợp cho trường hợp sử dụng của họ dự kiến ​​sẽ chỉ đảm bảo rằng tất cả các chủ e-mail hợp pháp sẽ có thể vượt qua. Định nghĩa về "hợp pháp" khác nhau rất nhiều so với điểm kỹ thuật (RFC 5322 theo cách) đến điểm quan điểm khả năng sử dụng (giải pháp này). Khía cạnh khả năng sử dụng của xác thực nhằm đảm bảo rằng tất cả các ID e-mail được xác nhận bởi cơ chế xác nhận thuộc về người thực tế, sử dụng chúng cho mục đích giao tiếp của họ. Điều này, do đó đưa ra một góc khác cho quá trình xác thực, đảm bảo ID e-mail "sử dụng" thực sự ", một yêu cầu mà định nghĩa RFC-5322 rõ ràng là không đủ.

Do đó, trên cơ sở thực tế, các yêu cầu thực tế đã đưa ra điều này -

  1. Để đảm bảo một số kiểm tra xác nhận rất cơ bản
  2. Để đảm bảo rằng e-mail được nhập vào

Yêu cầu thứ hai thường liên quan đến, gửi một phản hồi tiêu chuẩn tìm kiếm e-mail đến ID e-mail được nhập và xác thực người dùng dựa trên hành động được phân định trong cơ chế phản hồi. Đây là cơ chế được sử dụng rộng rãi nhất để đảm bảo yêu cầu thứ hai là xác thực ID e-mail "sử dụng". Điều này không liên quan đến việc vấp ngã từ triển khai máy chủ back-end và không phải là triển khai một màn hình đơn thẳng, tuy nhiên, người ta không thể loại bỏ điều này.

Yêu cầu đầu tiên, bắt nguồn từ sự cần thiết mà các nhà phát triển không muốn các chuỗi hoàn toàn "không phải e-mail như" truyền qua e-mail. Điều này thường liên quan đến chỗ trống, chuỗi không có dấu "@" hoặc không có tên miền. Với các biểu diễn PunyCode của các tên miền, nếu người ta cần kích hoạt xác thực tên miền, họ cần tham gia vào việc triển khai toàn diện để đảm bảo một tên miền hợp lệ. Do đó, với bản chất cơ bản của yêu cầu trong vấn đề này, xác nhận cho "@." là cách duy nhất thích đáp ứng yêu cầu.

Một Regex điển hình có thể đáp ứng yêu cầu này là:^[^@\ s]+@[^@\ s.]+. [^@\ S.] Theo sau là phần lớn các ngôn ngữ lập trình. Tuyên bố xác thực là: @.

Đối với những người muốn đi sâu hơn một bước vào các triển khai phù hợp hơn, họ có thể làm theo phương pháp xác nhận sau đây. @

Đối với - làm theo các hướng dẫn của "Nhóm chỉ đạo chấp nhận phổ quát" - UASG -026 cho, bạn có thể làm theo bất kỳ phương pháp xác thực miền nào bằng các thư viện tiêu chuẩn, tùy thuộc vào ngôn ngữ lập trình của bạn. Đối với các nghiên cứu gần đây về chủ đề này, hãy theo tài liệu UASG-018A.

Những người quan tâm để biết quá trình, thách thức và vấn đề chung mà người ta có thể gặp phải trong khi thực hiện giải pháp email quốc tế hóa, họ cũng có thể trải qua các RFC sau:

RFC 6530 (Tổng quan và Khung cho Email Quốc tế hóa) RFC 6531 (Tiện ích mở rộng SMTP cho email quốc tế hóa) RFC 6532 (Tiêu đề email quốc tế hóa) RFC 6533 (Tình trạng giao hàng quốc tế hóa và thông báo xử lý) RFC 6855 (Hỗ trợ IMAP cho UTF-8) Giao thức văn phòng Phiên bản 3 (POP3) Hỗ trợ cho UTF-8) RFC 6857 (hạ cấp tin nhắn sau giao hàng cho các tin nhắn email quốc tế hóa) RFC 6858 (POP đơn giản hóa và hạ cấp IMAP cho email quốc tế hóa).

Làm thế nào tôi có thể xác thực một địa chỉ email hiện có trong PHP?

Xác thực email trong PHP có thể dễ dàng thực hiện bằng cách sử dụng chức năng Filter_var () với bộ lọc Filter_validate_email.Nó sẽ kiểm tra xem định dạng của địa chỉ email đã cho là hợp lệ.using filter_var() function with FILTER_VALIDATE_EMAIL filter. It will check if the format of the given email address is valid.

Xác thực hình thức phía máy chủ trong PHP là gì?

Xác thực phía máy chủ - Trong xác thực phía máy chủ, xác thực thực hiện sau khi người dùng gửi dữ liệu đến máy chủ qua biểu mẫu HTML bằng cách nhấp vào nút gửi và dữ liệu nhận được ở phía máy chủ và kiểm tra dữ liệu trên máy chủ.Nếu bạn có bất kỳ dữ liệu nào không tuân theo các quy tắc thì máy chủ gửi lại thông báo lỗi đến máy khách.validation perform after the user send data to server via html form by click on submit button and data received on server side and check data on server. If you there is any data is not follow rules then server send back error message to client computer.

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"); } ?>

Làm thế nào xác thực Gmail trong PHP?

Bạn có thể thực hiện email xác thực PHP bằng cách sử dụng chức năng Filter_var () và truyền email và bộ lọc ID đã cho là bộ lọc_validate_email làm đối số.ID bộ lọc đã nêu sẽ kiểm tra xem định dạng của email có chính xác theo cú pháp trong RFC 822 không.using the filter_var() function and passing the given email and filter id “FILTER_VALIDATE_EMAIL” as arguments. The stated filter id will check if the format of the email is correct according to the syntax in RFC 822.