Form liên hệ có file đính kèm PHP

Các biểu mẫu liên hệ luôn là một giải pháp thay thế khá hiệu quả cho các liên kết mailto lan truyền khắp các trang web. Và đó vẫn là trường hợp vào năm 2022.  

Chúng dễ sử dụng đối với khách hàng và khó phát hiện hơn đối với những người thu thập email. Như bạn mong đợi, việc xây dựng một biểu mẫu liên hệ email PHP hiệu quả không khó chút nào. Chúng tôi sẽ giải thích quy trình từng bước trong bài viết này

Về cơ bản chúng ta sẽ làm điều này

  • Tạo một biểu mẫu liên hệ HTML đơn giản với các trường nhập (và CSS tùy chọn) và nhúng nó vào trang web của chúng tôi
  • Viết một tập lệnh PHP sẽ xử lý hiệu quả việc gửi email
  • Lưu các chi tiết đã chèn vào bảng tính
  • Gửi thư trả lời tự động cho người dùng, cho họ biết chúng tôi sẽ xử lý yêu cầu của họ
  • Cung cấp tổng quan về một số vấn đề phổ biến với việc gửi biểu mẫu email PHP

Chúng tôi sẽ không chỉ giải thích cách tạo biểu mẫu email php mà còn chỉ cho bạn cách bảo mật biểu mẫu thư bằng reCaptcha và cách thực hiện xác thực biểu mẫu cũng như cách xử lý các lỗi phổ biến. Vì vậy, hãy bắt đầu

Hướng dẫn xây dựng biểu mẫu liên hệ PHP đơn giản

Để bắt đầu, chúng ta sẽ cần xây dựng một biểu mẫu đơn giản chỉ bằng mã HTML. Nếu bạn không quan tâm nhiều đến khía cạnh trực quan của nó, nó có thể đơn giản như thế này

Contact us

Tất nhiên, không có bất kỳ CSS nào, nó trông rất xấu

Form liên hệ có file đính kèm PHP

Nhưng nó sẽ tốt cho mục đích trình diễn. Nếu bạn không thích viết CSS vào lúc này, bạn có thể sử dụng bất kỳ mẫu nào trong số hàng trăm mẫu và trình tạo biểu mẫu email có sẵn với thiết kế đẹp mắt cho các trường nhập của dữ liệu biểu mẫu, các nút gửi hấp dẫn và thiết kế UX tổng thể hấp dẫn.  

Một số tùy chọn bao gồm Simfatic, 123FormBuilder và PHP Jabbers. CodeCanyon có hàng trăm công cụ với các đánh giá cho từng công cụ để giúp bạn lựa chọn dễ dàng hơn.   

Được rồi, chúng tôi đã có biểu mẫu liên hệ, nhưng bất kỳ dữ liệu nào người dùng chèn vào đều đi thẳng vào lỗ đen. Vì vậy, chúng ta sẽ cần thêm hai thành phần nữa vào biểu mẫu–ACTION và METHOD

Trong trường hợp của chúng tôi, chúng tôi muốn tải một trang PHP mới ở chế độ nền mà chúng tôi sẽ đề cập trong chương tiếp theo. Vì chúng tôi sẽ xử lý dữ liệu nên chúng tôi có nghĩa vụ pháp lý phải bảo vệ thông tin chi tiết của người dùng (tên và địa chỉ email), khiến phương thức POST trở thành một lựa chọn an toàn hơn. Sử dụng GET có nghĩa là những chi tiết này được đưa vào URL của trang tiếp theo, điều mà chúng tôi muốn tránh. Hãy nhớ rằng URL có giới hạn của nó (giá trị dấu gạch chéo ở cuối không được vượt quá 2.048 ký tự), do đó, phương thức GET thực sự không thể được sử dụng cho biểu mẫu liên hệ do giới hạn URL

Tất cả những gì chúng ta cần làm bây giờ là đưa hai thuộc tính này vào mã mà chúng ta đã sử dụng trước đây

Contact us

Xác thực và xác minh dữ liệu

Để loại bỏ một số kẻ gửi thư rác, nhưng cũng để bảo vệ người dùng của bạn khỏi vô tình nhập nhầm chi tiết liên hệ của họ, bạn nên thêm một số thuật toán xác thực vào biểu mẫu liên hệ. Để có cơ hội thành công cao nhất, hãy cân nhắc thực hiện việc này trên cả phía máy khách và phía máy chủ.  

Xác thực phía máy khách sẽ nhanh chóng trả về bất kỳ lỗi nào trên giao diện người dùng, cho phép người dùng khắc phục chúng ngay lập tức. Xác minh phía máy chủ cũng sẽ bắt được những người đã vượt qua bài kiểm tra ban đầu (ví dụ: bằng cách tắt JavaScript trong trình duyệt) nhưng không nên

Mặc dù bạn có thể viết tập lệnh của riêng mình nhưng việc sử dụng những gì đã được xây dựng và thử nghiệm thường rất đáng giá. Chúng tôi sẽ sử dụng giải pháp chống đạn để xác thực lược đồ – https. // xác thực js. tổ chức/. Để đơn giản, chỉ cần thêm thư viện từ CDN

Để xác thực phía máy chủ, bạn có thể sử dụng đoạn mã sau

Nếu một trong hai xác minh không thành công, bạn nên thông báo cho người dùng biết. Bạn có thể sử dụng đoạn mã sau để tạo thông báo lỗi

', $errors);
   $errorMessage = "

{$allErrors}

"; }

Bạn có thể tự do hiển thị thông báo này ở bất kỳ đâu trên trang của mình.  

Mã PHP để gửi email từ biểu mẫu liên hệ

Hình thức của chúng tôi đang dẫn đầu ở đâu đó, nhưng không rõ ở đâu. Hãy thêm một số điểm hành động và sử dụng hàm mail() mặc định để gửi một email đơn giản sau khi gửi

Mã của biểu mẫu liên hệ PHP này chỉ định các tiêu đề và nội dung của thư và gửi từng email bằng phương thức mail(). Nó cũng bao gồm các xác thực mà chúng tôi đã giải thích trong chương trước và chính biểu mẫu HTML




Contact form submission




 $email, 'Reply-To' => $email, 'Content-type' => 'text/html; charset=utf-8'];
       $bodyParagraphs = ["Name: {$name}", "Email: {$email}", "Message:", $message];
       $body = join(PHP_EOL, $bodyParagraphs);

       if (mail($toEmail, $emailSubject, $body, $headers)) 

           header('Location: thank-you.html');
       } else {
           $errorMessage = 'Oops, something went wrong. Please try again later';
       }

   } else {

       $allErrors = join('
', $errors); $errorMessage = "

{$allErrors}

"; } } ?>

Contact us

Nếu biểu mẫu liên hệ PHP trả về lỗi 500, hãy kiểm tra kỹ xem bạn đã chỉ định đúng các tham số của hàm mail() chưa. Đảm bảo rằng máy chủ thư được cấu hình đúng trên máy của bạn

Tất nhiên, các biểu mẫu liên hệ PHP cho phép các phương thức gửi email khác nhau. Có thể cho rằng lựa chọn phổ biến nhất để gửi email bằng PHP là PHPMailer. Nếu bạn chưa quen với nó, hãy đọc hướng dẫn của chúng tôi về cách gửi email bằng PHPMailer

Đây là cách mã PHPMailer trông như thế nào cho trang này

', $errors);
       $errorMessage = "

{$allErrors}

"; } else { $mail = new PHPMailer(); // specify SMTP credentials $mail->isSMTP(); $mail->Host = 'smtp.mailtrap.io'; $mail->SMTPAuth = true; $mail->Username = 'your_smtp_username'; $mail->Password = 'your_smtp_password'; $mail->SMTPSecure = 'tls'; $mail->Port = 2525; $mail->setFrom($email, 'Mailtrap Website'); $mail->addAddress('[email protected]', 'Me'); $mail->Subject = 'New message from your website'; // Enable HTML if needed $mail->isHTML(true); $bodyParagraphs = ["Name: {$name}", "Email: {$email}", "Message:", nl2br($message)]; $body = join('
', $bodyParagraphs); $mail->Body = $body; echo $body; if($mail->send()){ header('Location: thank-you.html'); // Redirect to 'thank you' page. Make sure you have it } else { $errorMessage = 'Oops, something went wrong. Mailer Error: ' . $mail->ErrorInfo; } } } ?>

Contact us

Có một số công cụ đáng tin cậy khác cũng có thể xử lý tác vụ. Hãy xem hướng dẫn gửi email bằng PHP của chúng tôi để biết thêm chi tiết

Làm cách nào để thêm hộp kiểm “Chấp nhận điều khoản/chính sách bảo mật” vào biểu mẫu của bạn?

Cái này thuộc danh mục biểu mẫu đơn giản với một hộp kiểm duy nhất

Đây là cách mã cho một biểu mẫu thư đơn giản có hộp kiểm trong PHP trông như thế nào.
Bản thân biểu mẫu

________số 8

Và tập lệnh PHP cho nó

Làm cách nào để gửi biểu mẫu thư cho nhiều người nhận?

Với các mẫu email PHP, quy tắc không khác gì gửi email PHP nói chung. Thêm nhiều địa chỉ email nhận cho các biểu mẫu đã gửi thông qua phương thức cc và bcc (nghĩa là sử dụng dấu phẩy)

Contact us

0

Hoặc sử dụng một foreach

Contact us

1

Làm cách nào để gửi email có tệp đính kèm bằng biểu mẫu liên hệ PHP?

Nếu biểu mẫu liên hệ của bạn có trường tải tệp lên, tệp cần được gửi cùng với email dưới dạng tệp đính kèm. Với hàm mail(), bạn có thể dễ dàng gửi biểu mẫu liên hệ qua email có tệp đính kèm trong PHP. Chỉ cần thêm các đoạn mã sau vào ứng dụng của bạn

First, you need to add an attachment field to your HTML mail form. Add the following lines of code within the

tags: 


Contact us

2

Thứ hai, kiểm tra và xác thực phần mở rộng tệp để cho phép các định dạng tệp nhất định (tệp PDF, PNG và/hoặc MS Word)

Contact us

3

Thứ ba, tải lên tệp đính kèm

Contact us

4

Thứ tư, làm phần còn lại

Contact us

5

Mặc dù vậy, mã cho biểu mẫu liên hệ email có tệp đính kèm trong PHPMailer sẽ đơn giản hơn nhiều

Contact us

6

Và đó là về nó

Bằng mọi cách, hãy sử dụng mail() để kiểm tra hoặc nếu thỉnh thoảng nhận được phản hồi từ biểu mẫu liên hệ là tất cả những gì bạn cần từ chức năng gửi thư. Nhưng nếu bạn định gửi nhiều email giao dịch, bạn nên tìm một giải pháp thay thế đáng tin cậy hơn. Tìm hiểu thêm về cách kiểm tra email được gửi từ PHP

Biểu mẫu liên hệ PHP với Google reCaptcha

Để thêm một lớp bảo mật nữa, bạn có thể muốn thêm tập lệnh reCaptcha đơn giản vào biểu mẫu thư PHP của mình. Bạn có thể làm điều này một cách rất đơn giản.  

Trước hết, hãy truy cập https. //www. Google. com/recaptcha/admin/create và điền vào biểu mẫu bạn sẽ tìm thấy ở đó. Bạn có thể chọn giữa reCaptcha v2 và v3 (v1 không còn được hỗ trợ). Để làm cho nó đơn giản, chúng tôi sẽ chọn cái trước.  

ReCaptcha v2 được gửi cùng với một biểu mẫu và chúng tôi có thể dễ dàng xử lý nó trong phần phụ trợ với phần còn lại của các trường biểu mẫu. Mặt khác, ReCaptcha v3 cần được gọi thủ công trên giao diện người dùng. Điều này có thể thực hiện được nhưng sẽ yêu cầu chúng tôi viết lại toàn bộ mã. Chuyện này để dịp khác

Form liên hệ có file đính kèm PHP

Gửi biểu mẫu và bạn sẽ thấy Khóa trang web và Khóa bí mật cá nhân của mình. Kiểm tra toàn bộ biểu mẫu với ReCaptcha được thêm vào

Contact us

7

Lưu trữ câu trả lời trong Bảng tính Google

Vì chúng tôi chỉ muốn lưu một vài giá trị ở đâu đó, chúng tôi chỉ có thể điền kết quả vào Google Sheet. Hãy kết nối các webhook của Zapier với một bảng tính. Để bắt đầu, đừng quên chỉ định các cột trong bảng mà ứng dụng sẽ sử dụng để nhận biết vị trí đặt dữ liệu do biểu mẫu của chúng tôi gửi.  

Form liên hệ có file đính kèm PHP

Tạo một Zap mới sẽ kết nối webhook và bảng tính, làm theo hướng dẫn trong Zapier. Chúng siêu rõ ràng, vì vậy bạn sẽ có thể tự mình tìm ra. Trong ứng dụng, Zap của bạn sẽ trông như thế này

Form liên hệ có file đính kèm PHP

Sử dụng mã này để gửi yêu cầu tới Zapier và xem bảng tính của bạn được điền như thế nào sau mỗi lần gửi biểu mẫu

Contact us

8

Biểu mẫu liên hệ PHP không gửi email. làm thế nào để khắc phục vấn đề?

Biểu mẫu liên hệ trong PHP sử dụng hàm mail() hoặc xác thực SMTP để gửi email. Điều này có nghĩa là một số sự cố phổ biến mà bạn có thể gặp phải có liên quan đến chức năng mail() bị trục trặc hoặc do cài đặt không chính xác của SMTP. Có một danh sách kiểm tra tối thiểu về những gì bạn có thể làm để khắc phục sự cố

Mã phải khớp với phương thức biểu mẫu

Khi bạn đặt phương thức biểu mẫu thành POST, hãy đảm bảo rằng bạn sử dụng $_POST để tìm các giá trị biểu mẫu của mình. Mặt khác, nếu bạn đặt thành GET hoặc hoàn toàn không đặt, thì bạn cần sử dụng $_GET để tìm các giá trị biểu mẫu của mình

Định cấu hình máy chủ thư localhost đúng cách

Nếu máy trạm của bạn là cục bộ và bạn phát triển cục bộ bằng WAMP, MAMP hoặc XAMPP, máy chủ email có thể không được cài đặt trên máy trạm của bạn. Tuy nhiên bắt buộc phải cài đặt vì mặc định PHP không gửi được mail

Sử dụng một gói gửi thư khác

Hàm mail() có sẵn trong PHP đơn giản nhưng nó có khá nhiều nhược điểm. Xem xét các lựa chọn thay thế mang lại sự linh hoạt hơn và ít lỗi hơn như PHPMailer hoặc Symfony Mailer

Bật thư tùy chỉnh của PHP. đăng nhập

Điều này sẽ không ghi lại toàn bộ tương tác SMTP, nhưng ít nhất là các tham số gọi hàm và tập lệnh gọi

Contact us

9

Sử dụng API/SMTP với nhà cung cấp dịch vụ mail uy tín

Hàm mail() không hỗ trợ máy chủ SMTP bên ngoài và đây là một nút cổ chai nghiêm trọng. Vì email được gửi từ máy chủ của riêng bạn chứ không phải từ máy chủ của ESP (Nhà cung cấp dịch vụ gửi email), chúng sẽ thường xuyên chuyển đến thư rác. Vì vậy, bạn thực sự có thể gửi các biểu mẫu email, nhưng chúng không nhất thiết phải đến hộp thư đến. Và đó là một vấn đề nghiêm trọng

Cân nhắc sử dụng API Email/SMTP sẽ thực hiện công việc gửi và giúp bạn tiết kiệm thời gian và công sức không cần thiết. Với Mailtrap API/ SMTP, bạn có thể bắt đầu gửi trong khoảng 5 phút tất cả các mẫu email PHP cần thiết mà bạn cần, với cấu hình tối thiểu và kết quả tốt nhất có thể.  

Đoạn mã đơn giản để tích hợp Mailtrap API PHP

0

Thử gửi email bằng PHP với Mailtrap miễn phí

Hoặc trong trường hợp bạn thích SMTP

1

Về cơ bản, những gì bạn cần làm là truy cập Mailtrap và sao chép và dán thông tin đăng nhập. Và sau đó bạn có thể dùng thử miễn phí. Nó có thể là công cụ thay đổi cuộc chơi cho quá trình phát triển của bạn

Dùng thử Mailtrap miễn phí

kết thúc

Đôi khi bạn tự hỏi liệu một biểu mẫu liên hệ có phải là cách tiếp cận phù hợp để làm xáo trộn email không?

Một lưu ý cuối cùng. Xây dựng một biểu mẫu liên hệ email PHP hiệu quả không khó chút nào. Và có nhiều cách bạn có thể làm điều này. Và trong bài viết này, bạn chắc chắn đã thấy một vài. Điều khó hơn nhiều là tiếp cận hộp thư đến của người nhận. Đôi khi, hàm PHP mail() có thể không đủ. Đây là lúc bạn có thể cần sự trợ giúp của nhà cung cấp dịch vụ thư uy tín để nhận và gửi email theo cách bạn muốn

Làm cách nào để tạo biểu mẫu email dựa trên PHP với tệp đính kèm?

Kiểm tra và xác thực phần mở rộng tệp để cho phép các định dạng tệp nhất định (tệp PDF, Hình ảnh và MS Word). Tải tệp lên máy chủ bằng hàm PHP move_uploaded_file(). Thêm dữ liệu biểu mẫu và tệp đã tải lên vào nội dung email. Gửi email đến người nhận được chỉ định với tệp đính kèm bằng hàm PHP mail()

Làm cách nào để đính kèm và gửi tệp trong email bằng biểu mẫu PHP?

Gửi email kèm theo tệp đính kèm khi gửi biểu mẫu .
Nhận dữ liệu biểu mẫu đã gửi bằng cách sử dụng $_POST trong PHP
Xác thực dữ liệu biểu mẫu để kiểm tra xem các trường bắt buộc có trống không
Xác thực địa chỉ email bằng FILTER_VALIDATE_EMAIL trong PHP
Kiểm tra phần mở rộng tệp để cho phép các định dạng tệp nhất định (tệp PDF, Hình ảnh và MS Word)

Làm cách nào để gửi dữ liệu biểu mẫu HTML tới email có tệp đính kèm bằng PHP?

Hãy làm theo các bước sau để gửi biểu mẫu HTML gửi trực tiếp tới một địa chỉ email. .
Tạo biểu mẫu liên hệ bằng HTML và CSS
Lưu trữ biểu mẫu HTML trên máy chủ lưu trữ web trực tiếp để viết tập lệnh PHP
Mở trình chỉnh sửa Mã VS của bạn
Kết nối trình chỉnh sửa Mã VS với máy chủ web trực tiếp bằng tiện ích mở rộng SFTP
Thay đổi phần mở rộng tệp của bạn từ

Làm cách nào để gửi email xác nhận cho người dùng sau khi gửi biểu mẫu bằng PHP?

1 câu trả lời .
tạo một trường được kích hoạt trong cơ sở dữ liệu (mặc định là sai)
Sau khi đăng ký, email được gửi
Điền một liên kết trong email, để bao gồm. a) mã định danh duy nhất của người dùng b) kích hoạt để hoạt động. .
Tập lệnh đăng ký của bạn cố lấy người dùng theo id
Cập nhật trường đã kích hoạt thành true