Xác thực biểu mẫu PHP với thông báo lỗi

Theo nhu cầu phổ biến, đây là một số hướng dẫn cơ bản để thiết lập trình xử lý biểu mẫu trong PHP để xác minh đầu vào của người dùng và gửi email hoặc hiển thị thông báo lỗi trong trường hợp xác thực không thành công

Biểu mẫu HTML mẫu

Đây là mã HTML và PHP cho biểu mẫu mà chúng ta sẽ làm việc với

Your Name*

Email Address*

Subject

Enquiry*

Biểu mẫu sẽ giống như sau - biểu mẫu phản hồi đơn giản cơ bản của bạn

Đối với mục đích thử nghiệm, chúng tôi đã xóa tất cả Xác thực biểu mẫu JavaScript và Xác thực biểu mẫu HTML5 thông thường để biểu mẫu có thể được gửi và xác thực đơn giản bằng PHP trên máy chủ

Bạn sẽ nhận thấy rằng chúng tôi đã sử dụng PHP để chèn hành động biểu mẫu làm trang hiện tại. Đó là bởi vì chúng ta đang sử dụng kỹ thuật "redirect-after-POST" như minh họa ở đây

isset[$_POST['sendfeedback'], $_POST['name'], $_POST['email'], $_POST['subject'], $_POST['message']]] { $name = $_POST['name']; $email = $_POST['email']; $subject = $_POST['subject']; $message = $_POST['message']; if[!$name] { $errorMsg = "Please enter your Name"; } elseif[!$email || !preg_match["/^\S+@\S+$/", $email]] { $errorMsg = "Please enter a valid Email address"; } elseif[!$message] { $errorMsg = "Please enter your comment in the Message box"; } else { // send email and redirect $to = "feedback@example.com"; if[!$subject] $subject = "Contact from website"; $headers = "From: webmaster@example.com" . "\r\n"; mail[$to, $subject, $message, $headers]; header["Location: //www.example.com/thankyou.html"]; exit; } } ?>

Tất cả các thành phần biểu mẫu HTML, ngoài các hộp kiểm và nút radio không được chọn, sẽ xuất hiện trong mảng $_POST, ngay cả khi giá trị trống. Điều này bao gồm nút gửi, trong trường hợp này chúng tôi đã đặt tên là gửi phản hồi. Đặt tên cho nút rất hữu ích trong trường hợp có nhiều biểu mẫu trên trang

Điều đầu tiên mà trình xử lý biểu mẫu thực hiện là kiểm tra xem tất cả các trường trong biểu mẫu của chúng ta, bao gồm cả nút, có xuất hiện trong mảng POST không. Sau đó, chúng tôi trích xuất các giá trị có liên quan để thử nghiệm

Thử nghiệm ở đây khá thô sơ. Trên thực tế, chúng tôi có các chức năng đặc biệt để xác thực địa chỉ email và các loại dữ liệu khác - cũng như hầu hết các thư viện JavaScript. Chúng tôi cũng có các chức năng nâng cao hơn để gửi email

Đối với các biểu mẫu công khai, bạn nên thêm CAPTCHA hoặc thiết bị tương tự, như bạn có thể thấy trong biểu mẫu Phản hồi của chúng tôi bên dưới, hoặc có nguy cơ bị tấn công bởi spam bots

Vị trí của mã

Mã PHP cần xuất hiện ở đầu trang - trước khi bất kỳ HTML hoặc khoảng trắng nào được hiển thị. Nếu không, chuyển hướng sẽ thất bại với cảnh báo phổ biến "Không thể sửa đổi thông tin tiêu đề - tiêu đề đã được gửi"

Mã cuối cùng của bạn sẽ trông giống như thế này

// php form handler and redirect ?>......

Việc JavaScript xuất hiện ở đâu trên trang thực sự không quan trọng, dù là nội tuyến hay dưới dạng liên kết

Hiển thị thông báo lỗi

Khi biểu mẫu được gửi, nhưng không được xác thực, quá trình thực thi mã sẽ chuyển đến trang. Tất cả những gì chúng ta cần làm là kiểm tra thông báo lỗi và hiển thị nó trên trang

*",htmlspecialchars[$errorMsg],"\n\n"; } ?>

Một lần nữa, phiên bản nâng cao hơn sẽ đặt thông báo lỗi bên cạnh trường bị ảnh hưởng và thực hiện điều này cho nhiều trường cùng một lúc. Trong phần trình diễn ở trên, chúng tôi đã bao gồm thông báo lỗi ở đầu biểu mẫu

Để biết các phương pháp xác thực nâng cao hơn, bao gồm CAPTCHA hoặc trình bày biểu mẫu phản hồi trong cửa sổ phương thức, bạn có thể xem một số bài viết liên quan bên dưới

Tránh các biến toàn cầu

Trong ví dụ trước, chúng ta đã phạm sai lầm trong việc làm ô nhiễm không gian biến toàn cục. Chúng ta có thể tránh điều này và làm cho mã của chúng ta trở nên mô-đun hơn và có thể tái sử dụng bằng cách gọi nó là một hàm

// form handler function validateFeedbackForm[$arr] { extract[$arr]; if[!isset[$name, $email, $subject, $message]] return; if[!$name] { return "Please enter your Name"; } if[!preg_match["/^\S+@\S+$/", $email]] { return "Please enter a valid Email address"; } if[!$subject] $subject = "Contact from website"; if[!$message] { return "Please enter your comment in the Message box"; } // send email and redirect $to = "feedback@example.com"; $headers = "From: webmaster@example.com" . "\r\n"; mail[$to, $subject, $message, $headers]; header["Location: //www.example.com/thankyou.html"]; exit; } // execution starts here if[isset[$_POST['sendfeedback']]] { // call form handler $errorMsg = validateFeedbackForm[$_POST]; } ?>

Phương thức giải nén biến các cặp khóa/giá trị từ mảng $_POST thành các biến riêng biệt, nhưng chỉ dành cho phạm vi của hàm

Chúng tôi có thể tiến xa hơn và tạo một lớp xác thực biểu mẫu, với các phương thức riêng biệt để xác thực văn bản, email, ngày tháng, v.v., nhưng bản thân đó là một dự án

Làm cách nào để hiển thị thông báo lỗi xác thực trong PHP?

Để hiển thị đầu vào không hợp lệ trong PHP, đặt tên của hộp văn bản đầu vào trong HTML . Tất cả các trường trước tiên được kiểm tra các trường trống và sau đó nó được xác thực về tính chính xác. Nếu tất cả các trường đều chính xác thì nó hiển thị thông báo thành công.

Làm cách nào để viết thông báo lỗi trong PHP?

Lỗi Ghi nhật ký . tập tin ini. Bằng cách sử dụng hàm error_log[], bạn có thể gửi nhật ký lỗi tới một tệp cụ thể hoặc một đích đến từ xa .

Làm cách nào để xác thực dữ liệu biểu mẫu bằng PHP?

PHP xác thực dữ liệu ở phía máy chủ, được gửi bằng biểu mẫu HTML. .
$name = $_POST ["Tên"];
nếu [. preg_match ["/^[a-zA-z]*$/", $name] ] {
$ErrMsg = "Chỉ cho phép bảng chữ cái và khoảng trắng. “;
tiếng vang $ErrMsg;
} khác {
tiếng vang $name;

Làm cách nào để đặt xác thực trong biểu mẫu đăng ký PHP?

Cách tạo biểu mẫu đăng ký bằng PHP và MySQL có xác thực .
Bước 1 – Tạo tệp kết nối cơ sở dữ liệu. Trong bước này, bạn sẽ tạo một tên tệp db. .
Bước 2 – Tạo biểu mẫu đăng ký và lưu dữ liệu vào cơ sở dữ liệu MySQL. Ở bước này, bạn cần tạo một biểu mẫu và cập nhật mã bên dưới vào biểu mẫu đăng ký của bạn

Chủ Đề