Một mẫu đơn đặt hàng lý tưởng cho một cửa hàng trực tuyến. Tạo biểu mẫu phản hồi - đánh dấu php. Thông báo lỗi trên biểu mẫu được hiển thị và rõ ràng
Một trong những chức năng phổ biến nhất trên trang web là mẫu đơn đăng ký hoặc đơn đặt hàng, dữ liệu từ đó sẽ được gửi qua email đến chủ sở hữu trang web. Theo quy định, các biểu mẫu như vậy rất đơn giản và bao gồm hai hoặc ba trường để nhập dữ liệu. Làm thế nào để tạo một mẫu đơn đặt hàng như vậy? Điều này đòi hỏi phải sử dụng ngôn ngữ đánh dấu HTML và ngôn ngữ Lập trình PHP.
Bản thân ngôn ngữ đánh dấu HTML rất đơn giản; bạn chỉ cần tìm ra cách thức và vị trí đặt các thẻ nhất định. Với ngôn ngữ lập trình PHP, mọi thứ phức tạp hơn một chút.
Việc tạo ra một biểu mẫu như vậy không khó đối với một lập trình viên, nhưng HTML cho người thiết kế bố cục Một số hành động có thể có vẻ khó khăn.
Tạo biểu mẫu gửi dữ liệu bằng html
Dòng đầu tiên sẽ như sau
Bây giờ chúng ta hãy đặt mọi thứ lại với nhau.
Bây giờ hãy đặt các trường trong biểu mẫu là bắt buộc. Chúng tôi có đoạn mã sau:
Tạo một tệp chấp nhận dữ liệu từ biểu mẫu HTML
Đây sẽ là một tập tin có tên send.php
Trong tệp, ở giai đoạn đầu tiên, bạn cần chấp nhận dữ liệu từ mảng bài đăng. Để làm điều này, chúng tôi tạo hai biến:
$fio = $_POST["fio"];
$email = $_POST["email"];
Tên biến trong PHP được đặt trước dấu $ và dấu chấm phẩy được đặt ở cuối mỗi dòng. $_POST là một mảng mà dữ liệu từ biểu mẫu được gửi vào. Ở dạng html, phương thức gửi được chỉ định là phương thức="post". Vì vậy, hai biến được lấy từ biểu mẫu html. Để bảo vệ trang web của bạn, bạn cần chuyển các biến này qua một số bộ lọc - các hàm php.
Hàm đầu tiên sẽ chuyển đổi tất cả các ký tự mà người dùng sẽ cố gắng thêm vào biểu mẫu:
Trong trường hợp này, các biến mới không được tạo trong php mà sử dụng các biến hiện có. Những gì bộ lọc sẽ làm là chuyển đổi ký tự "<" в "<". Также он поступить с другими символами, встречающимися в html коде.
Hàm thứ hai giải mã url nếu người dùng cố gắng thêm nó vào biểu mẫu.
$fio = urldecode($fio);
$email = urldecode($email);
Với hàm thứ ba, chúng ta sẽ xóa khoảng trắng ở đầu và cuối dòng, nếu có:
$fio = cắt($fio);
$email = cắt($email);
Có các chức năng khác cho phép bạn lọc các biến php. Việc sử dụng chúng tùy thuộc vào mức độ lo ngại của bạn về việc kẻ tấn công sẽ cố gắng thêm mã chương trình vào biểu mẫu gửi email html này.
Xác thực dữ liệu được chuyển từ dạng HTML sang tệp PHP
Để kiểm tra xem mã này có hoạt động hay không và dữ liệu có được truyền hay không, bạn chỉ cần hiển thị nó trên màn hình bằng chức năng echo:
echo $fio;
tiếng vang "
";
echo $fio;
Dòng thứ hai ở đây là cần thiết để tách đầu ra của các biến php thành các dòng khác nhau.
Gửi dữ liệu nhận được từ biểu mẫu HTML tới email bằng PHP
Để gửi dữ liệu qua email, bạn cần sử dụng hàm mail trong PHP.
mail("gửi đến địa chỉ nào", "chủ đề của bức thư", "Thư (nội dung của bức thư)","Từ: thư được gửi từ email nào \r\n");
Ví dụ: bạn cần gửi dữ liệu đến email của chủ sở hữu hoặc người quản lý trang web [email được bảo vệ].
Chủ đề của bức thư phải rõ ràng và nội dung của bức thư phải chứa những gì người dùng chỉ định trong biểu mẫu HTML.
thư(" [email được bảo vệ]", "Ứng dụng từ trang web", "Tên đầy đủ:".$fio.". E-mail: ".$email ,"Từ: [email được bảo vệ]\r\n");
Cần phải thêm một điều kiện để kiểm tra xem biểu mẫu có được gửi bằng PHP đến địa chỉ email được chỉ định hay không.
nếu (thư(" [email được bảo vệ]", "Đặt hàng từ trang web", "Tên đầy đủ:".$fio.". E-mail: ".$email ,"Từ: [email được bảo vệ]\r\n"))
{
echo "tin nhắn đã được gửi thành công";
) khác (
}
Do đó, mã chương trình của tệp send.php, tệp này sẽ gửi dữ liệu biểu mẫu HTML tới email, sẽ trông như thế này:
$fio = $_POST["fio"];
$email = $_POST["email"];
$fio = htmlspecialchars($fio);
$email = htmlspecialchars($email);
$fio = urldecode($fio);
$email = urldecode($email);
$fio = cắt($fio);
$email = cắt($email);
// tiếng vang $fio;
// tiếng vang "
";
// tiếng vang $email;
nếu (thư(" [email được bảo vệ]", "Ứng dụng từ trang web", "Tên đầy đủ:".$fio.". E-mail: ".$email ,"Từ: [email được bảo vệ]\r\n"))
( echo "tin nhắn đã được gửi thành công";
) khác (
echo "xảy ra lỗi khi gửi tin nhắn";
}?>
Ba dòng để kiểm tra xem dữ liệu có đang được chuyển vào tệp hay không sẽ được nhận xét. Nếu cần, chúng có thể được gỡ bỏ vì chúng chỉ cần thiết để gỡ lỗi.
Chúng tôi đặt mã HTML và PHP để gửi biểu mẫu trong một tệp
Trong phần bình luận cho bài viết này, nhiều người đặt câu hỏi làm thế nào để đảm bảo rằng cả biểu mẫu HTML và mã PHP để gửi dữ liệu tới email đều nằm trong một tệp chứ không phải hai tệp.
Để thực hiện công việc này, bạn cần đặt mã HTML của biểu mẫu vào tệp send.php và thêm một điều kiện sẽ kiểm tra sự hiện diện của các biến trong mảng POST (mảng này được gửi từ biểu mẫu). Nghĩa là, nếu các biến trong mảng không tồn tại thì bạn cần hiển thị cho người dùng biểu mẫu. Ngược lại, bạn cần nhận dữ liệu từ mảng và gửi đến người nhận.
Hãy xem cách thay đổi mã PHP trong tệp send.php:
//kiểm tra xem các biến có tồn tại trong mảng POST không
if(!isset($_POST["fio"]) và !isset($_POST["email"]))(
?> ) khác (
//hiển thị biểu mẫu
$fio = $_POST["fio"];
$email = $_POST["email"];
$fio = htmlspecialchars($fio);
$email = htmlspecialchars($email);
$fio = urldecode($fio);
$email = urldecode($email);
$fio = cắt($fio);
$email = cắt($email);
nếu (thư(" [email được bảo vệ]", "Ứng dụng từ trang web", "Tên đầy đủ:".$fio.". E-mail: ".$email ,"Từ: [email được bảo vệ]\r\n"))(
echo "Tin nhắn đã được gửi thành công";
) khác (
echo "Đã xảy ra lỗi khi gửi tin nhắn";
}
}
?>
Chúng ta kiểm tra sự tồn tại của một biến trong mảng POST bằng hàm PHP isset(). Dấu chấm than trước hàm này trong điều kiện có nghĩa là phủ định. Nghĩa là, nếu biến không tồn tại thì chúng ta cần hiển thị biểu mẫu của mình. Nếu tôi không đặt dấu chấm than thì điều kiện đó sẽ có nghĩa đen là “nếu tồn tại thì hiển thị biểu mẫu”. Và điều này là sai trong trường hợp của chúng tôi. Đương nhiên, bạn có thể đổi tên nó thành index.php. Nếu đổi tên file đừng quên đổi tên tên file ở dòng