介绍
如果您正在开发一个网站或应用程序,并且需要一个联系表单,那么您需要编写一些 PHP 脚本来处理表单提交和验证输入数据。在本文中,我们将介绍 12 个最佳的 PHP 脚本,这些脚本可以方便地在您的网站或应用程序中使用。
1. PHP Form Builder
如果您想快速创建一个简单的联系表单,那么 PHP Form Builder 可以帮助您快速完成。这个脚本可以轻松地创建文本框、多选框、单选框和下拉菜单等元素。
使用 PHP Form Builder,您只需要简单地定义表单元素、验证规则和成功/失败消息,就可以轻松地创建一个完整的表单。
include "form_builder.php";
$form = new FormBuilder();
$form->add("name", "text", "Your Name", array("required"));
$form->add("email", "email", "Your Email", array("required", "email"));
$form->add("phone", "number", "Your Phone");
$form->add("message", "textarea", "Your Message", array("required"));
$form->setSubmitButton("Send Message");
$form->setSuccessMessage("Your message has been sent successfully!");
$form->setErrorMessage("There was an error sending your message. Please try again.");
echo $form->render();
PHP Form Builder 示例解释:
以上代码中的 form_builder.php
是 PHP Form Builder 的源代码。它创建了一个名为 $form
的表单对象,并添加了四个表单字段,其中三个字段使用了要求验证规则。
之后使用 setSubmitButton
函数来设置提交按钮的名称,使用 setSuccessMessage
函数来设置成功消息,使用 setErrorMessage
函数来设置错误消息。最后使用 render
方法来呈现表单。
2. PHPMailer
当用户提交表单之后,信息需要通过邮件发送给您。如果您使用 PHPMailer,您可以轻松地配置电子邮件设置,从而将表单数据发送到您的电子邮箱中。
以下是 PHPMailer 的使用示例:
use PHPMailer\PHPMailer\PHPMailer;
use PHPMailer\PHPMailer\Exception;
require 'vendor/autoload.php';
$mail = new PHPMailer(true);
try {
//Server settings
$mail->SMTPDebug = 0;
$mail->isSMTP();
$mail->Host = 'smtp.gmail.com';
$mail->SMTPAuth = true;
$mail->Username = 'your_email@gmail.com'; // SMTP username
$mail->Password = 'your_password'; // SMTP password
$mail->SMTPSecure = 'tls';
$mail->Port = 587;
//Recipients
$mail->setFrom('from@example.com', 'Mailer');
$mail->addAddress('your_email@example.com', 'You');
// Content
$mail->isHTML(true);
$mail->Subject = 'Subject';
$mail->Body = 'This is the HTML message body in bold!';
$mail->send();
echo 'Message has been sent';
} catch (Exception $e) {
echo 'Message could not be sent.';
echo 'Mailer Error: ' . $mail->ErrorInfo;
}
PHPMailer 示例解释:
以上代码中,首先导入 PHPMailer 的库文件,然后创建一个名为 $mail
的 PHPMailer 对象。
之后,您可以设置 SMTP 设置和电子邮件收件人、主题和正文。最后,调用 send
方法将邮件发送到您的收件箱中。
3. PHP Captcha
使用验证码可以防止恶意攻击者提交虚假表单,保护您的网站或应用程序免受垃圾邮件的侵害。PHP Captcha 是一种简单但有效的图像验证码脚本,可以轻松地嵌入您的表单中。
以下是 PHP Captcha 的使用示例:
session_start();
$captcha = new Captcha();
$captcha->setCode();
$_SESSION["captcha"] = $captcha->getCode();
header("Content-type: image/png");
$captcha->createImage();
PHP Captcha 示例解释:
以上代码中首先调用 session_start
函数,然后创建一个名为 $captcha
的 PHP Captcha 对象。
应用程序的表单在提交之前,需要在创建图像验证码、将验证码存储到 session 中,并在呈现到页面上之前的一系列步骤。最后,呈现和输出验证码图片。
4. PHP Login Script
如果您的应用程序需要用户登录,那么 PHP Login Script 可以帮助您轻松地创建一个安全的登录表单,并验证用户凭据。
以下是 PHP Login Script 的使用示例:
session_start();
if ($_SERVER["REQUEST_METHOD"] == "POST") {
$username = $_POST["username"];
$password = $_POST["password"];
if ($username == "admin" && $password == "password") {
$_SESSION["authenticated"] = "true";
header("Location: dashboard.php");
} else {
$_SESSION["error"] = "Invalid username or password.";
}
}
PHP Login Script 示例解释:
以上代码中首先调用 session_start
函数,然后检查请求类型是否为 POST。如果是,将获取传递过来的用户名和密码。
如果用户名和密码正确,则通过设置 session 变量来验证用户,然后将其重定向到安全页面。
5. PHP Contact Form with File Upload
如果您需要向用户提供文件上传功能,例如让用户上传简历或其他附件,那么 PHP Contact Form with File Upload 可以帮助您完成这个任务。
以下是 PHP Contact Form with File Upload 的使用示例:
session_start();
if ($_SERVER["REQUEST_METHOD"] == "POST") {
$name = $_POST["name"];
$email = $_POST["email"];
$phone = $_POST["phone"];
$message = $_POST["message"];
$file = $_FILES["file"]["name"];
$target_dir = "uploads/";
$target_file = $target_dir . basename($_FILES["file"]["name"]);
if (move_uploaded_file($_FILES["file"]["tmp_name"], $target_file)) {
$message .= "\n\nAttached File: http://" . $_SERVER['SERVER_NAME'] . dirname($_SERVER["REQUEST_URI"]) . "/" . $target_file;
}
// Send email with mailer or save to database
}
PHP Contact Form with File Upload 示例解释:
以上代码中,首先获取表单字段,包括附件。然后,设置文件上传目录和要上传的文件名,并将文件移动到上传目录中。最后,您可以使用电子邮件或数据库等方式将表单数据转存到适当的位置。
6. PHP Form Validation Library
PHP Form Validation Library 是一个轻量级的 PHP 库,可以使用它来验证表单数据。这个库可以检查文本框是否为空、电子邮件地址是否有效,以及其他常见的表单验证问题。
以下是 PHP Form Validation Library 的使用示例:
use Respect\Validation\Validator as v;
$errors = array();
if (!$name) {
$errors["name"] = "Name is required";
} else if (!v::alpha()->validate($name)) {
$errors["name"] = "Name can only contain letters";
}
if (!$email) {
$errors["email"] = "Email is required";
} else if (!v::email()->validate($email)) {
$errors["email"] = "Email is invalid";
}
if (!$phone) {
$errors["phone"] = "Phone is required";
} else if (!v::phone()->validate($phone)) {
$errors["phone"] = "Phone is invalid";
}
if (!$message) {
$errors["message"] = "Message is required";
} else if (!v::length(5, 5000)->validate($message)) {
$errors["message"] = "Message must be between 5 and 5000 characters";
}
PHP Form Validation Library 示例解释:
以上代码中,使用 use
声明(引用)了 Respect/Validation 库的类别名 v 这个对象。然后,使用 v::alpha
、v::email
、v::phone
和 v::length
等函数,检查字符串是否满足特定格式。
如果出现验证错误,将添加错误消息到 $errors
数组中。否则,表单数据将被视为有效。
7. PHP Form to Email
PHP Form to Email 是一个简单但有效的 PHP 脚本,可以将表单数据发送到电子邮件地址。这个脚本非常易于使用,可以在几分钟内设置。
以下是 PHP Form to Email 的使用示例:
$to = "you@example.com";
$subject = "New Form Submission";
$name = $_POST["name"];
$email = $_POST["email"];
$phone = $_POST["phone"];
$message = $_POST["message"];
$body = "Name: $name\nEmail: $email\nPhone: $phone\nMessage: $message";
$headers = "From: $email";
mail($to, $subject, $body, $headers);
PHP Form to Email 示例解释:
以上代码中,首先设置邮件收件人和主题变量。然后获取表单字段,并将它们格式化为电子邮件正文。最后,使用 PHP 的内置 mail
函数发送电子邮件。
8. Simple PHP Contact Form
Simple PHP Contact Form 是一个轻量级的 PHP 脚本,可以方便地添加一个简单的联系表单到您的网站或应用程序中。这个脚本不需要任何额外的库或依赖,非常容易安装和使用。
以下是 Simple PHP Contact Form 的使用示例:
if ($_SERVER["REQUEST_METHOD"] == "POST") {
$to = "you@example.com";
$subject = "New Form Submission";
$name = $_POST["name"];
$email = $_POST["email"];
$phone = $_POST["phone"];
$message = $_POST["message"];
$body = "Name: $name\nEmail: $email\nPhone: $phone\nMessage: $message";
$headers = "From: $email";
mail($to, $subject, $body, $headers);
}
Simple PHP Contact Form 示例解释:
以上代码中,如果请求是一个 POST 请求类型,那么将获取表单字段,创建电子邮件正文、主题和收件人变量,并使用 mail
函数发送电子邮件。
9. PHP Login with Remember Me
PHP Login with Remember Me 可以帮助您实现一个带有“记住我”的登录表单,使用户不必每次登录都完成所有步骤。
以下是 PHP Login with Remember Me 的使用示例:
session_start();
$users = array(
"admin" => "password",
"user" => "password"
);
if (!empty($_POST)) {
if ($users[$_POST["username"]] == $_POST["password"]) {
$_SESSION["authenticated"] = true;
if (isset($_POST["rememberme"]) && $_POST["rememberme"] == "yes") {
setcookie("username", $_POST["username"], time() + 86400 * 30);
setcookie("password", $_POST["password"], time() + 86400 * 30);
}
header("Location: dashboard.php");
} else {
$_SESSION["error"] = "Invalid username or password";
}
}
if (isset($_COOKIE["username"]) && isset($_COOKIE["password"]) && !isset($_SESSION["authenticated"])) {
if ($users[$_COOKIE["username"]] == $_COOKIE["password"]) {
$_SESSION["authenticated"] = true;
}
}
PHP Login with Remember Me 示例解释:
以上代码中,首先设置了用户名和密码的数组,然后在检查POST请求时,检查传递过来的用户名和密码是否与该数组匹配。如果匹配,则使用 session(如果设置了“记住我”)或 cookie(如果没有)来验证用户。
10. PHP AJAX Form Submit
PHP AJAX Form Submit 可以帮助您使用 AJAX 在不刷新整个网页的情况下提交表单数据,这使得用户体验更加流畅。
以下是 PHP AJAX Form Submit 的使用示例:
session_start();
if ($_SERVER["REQUEST_METHOD"] == "POST") {
$name = $_POST["name"];
$email = $_POST["email"];
$phone = $_POST["phone"];
$message = $_POST["message"];
// Save to database or send email
echo "success";
}
PHP AJAX Form Submit 示例解释:
以上代码中,如果请求类型为 POST,则将获取表单字段,并保存到数据库或发送电子邮件。最后,使用 echo 输出“成功”消息。
11. Multi-Step Form with PHP and jQuery
如果您需要创建一个多步骤表单,您可以使用 PHP 和 jQuery 来实现。这个示例将引导您逐步构建表单,并在每一步向用户展示获取的数据。
以下是 Multi-Step Form with PHP and jQuery 的使用示例:
session_start();
if ($_SERVER["REQUEST_METHOD"] == "POST") {
$_SESSION["name"] = $_POST["name"];
$_SESSION["email"] = $_POST["email"];
$_SESSION["phone"] = $_POST["phone"];
$_SESSION["message"] = $_POST["message"];
echo "success";
}
Multi-Step Form with PHP and jQuery 示例解释:
以上代码中,如果请求类型为 POST,则将获取表单字段,并将它们保存到 session 中。最后,使用 echo 输出“成功”消息。
12. PHP Contact Form with Google reCAPTCHA
Google reCAPTCHA 可以更加有效地防止垃圾邮件和机器人提交虚假的表单数据。如果您的网站或应用程序需要更高级别的安全性,您可以使用 PHP Contact Form with Google reCAPTCHA 增加安全级别。
以下是 PHP Contact Form with Google reCAPTCHA 的使用示例:
require_once "recaptchalib.php";
$secret = "YOUR_SECRET_KEY";
$response = $_POST["g-recaptcha-response"];
$remoteip = $_SERVER["REMOTE_ADDR"];
$recaptcha = new ReCaptcha($secret);
$resp