PHP 联系我们脚本,无需修改即可运行
PHP 联系我们脚本无需修改即可运行。它可以检测域名并将所有联系我们表单数据通过电子邮件发送。
PHP 联系我们脚本中的新功能
- 用户必须在提交之前在姓名、电子邮件、主题和消息字段中输入数据
- 新版本包含更多的用户输入过滤。因此,它可以保持脚本安全。我们使用函数
htmlspecialchars()
和过滤器FILTER_SANITIZE_STRING
来清理每个输入键和值。并且我删除了任何 HTML 代码或无效字符。
引言
开箱即用的 PHP 联系我们脚本,无需修改,它将检测域名并发送包含联系信息的电子邮件到 info@exmple.com,无论您的表单中有哪些字段;它将检测它们并将表单数据通过电子邮件发送。
系统要求
- 任何支持 PHP 的网站托管;几乎所有主机都支持它。
- 换句话说,您可以将其用于任何网站,无论它使用什么:纯 HTML/PHP、WordPress、Joomla、Drupal 或任何其他系统
PHP 版本
- PHP 5.6 / PHP 7.0 / PHP 7.1 / PHP 7.2 / PHP 7.3 / PHP 7.4 / PHP 8.0 / PHP 8.1 / PHP 8.2
背景
互联网上有许多联系我们脚本可用。另一方面,其他脚本在使用前需要修改 PHP 文件,而此脚本将直接开箱即用。
因此,此脚本对于那些不懂 PHP 以及 PHP 初学者非常有用。
Using the Code
- 解压缩下载的 zip 文件
- 然后在您网站的 www 目录中创建 contact-us 文件夹
- 之后,将文件上传到 contact-us 文件夹
- 就这样。
- 最后,联系我们的 URL 类似于 example.com/contact-us,将
example.com
替换为您的域名
修改联系我们表单设计
- 您可以根据需要修改“联系我们”页面的设计
- 根据需要添加或删除字段
- 使用
from_email
,from_name
,subject
,message
和captcha 作为
字段名称 - 放置您的广告或使您的表单没有广告
- 您可以自由地放置指向我们的链接,也可以不放置。
关于联系我们代码
From Action
<form action="send.php" method="POST">
字段名称
在您的表单中使用 from_email
, from_name
, subject
, message
和 captcha
作为主要字段名称。
验证码
如果您不希望使用验证码,请将 ‘config.php’ 代码的第一行更改为如下
$captcha = false;
如果您希望使用验证码,则无需更改,并且 ‘config.php’ 代码的第一行将如下
$captcha = true;
如果您需要修改表单;请注意,我们使用验证码,请在您的表单中包含以下内容
<img src="captcha_code_file.php?rand=<?php echo rand();
?>" id='captchaimg' ><br>
Enter the code above here : <input id="captcha"
name="captcha" type="text"><br>
输入过滤
为了保证脚本的安全,我们使用 FILTER_SANITIZE_STRING
来清理每个输入键和值。我删除了任何 HTML 代码或无效字符。
感谢页面 URL
将您自己的 $thank_you_url
放在代码的第二行。
此脚本的作用是什么?
- 检查引用页面,如果直接调用则停止脚本
$REFERER = $_SERVER['HTTP_REFERER']; if(!preg_match("@^http:\/\/(www\.)?$domain\/@",$REFERER)){ die("This page can't be call directly"); }
- 验证用户电子邮件和用户名,以防止在
mail()
函数的 header 参数中注入错误的命令if(!$from_email) $from_email = "web_page@$domain"; if (!filter_var($from_email, FILTER_VALIDATE_EMAIL)) { $Err .= 'Invalid email format<br>'; $from_email = "web_page@$domain"; }
- 验证主题并在需要时对其进行编码以防止发送失败
if ($subject && !preg_match('/^[A-Za-z ]+$/',$subject)){ $subject = "=?UTF-8?B?".base64_encode($subject)."?="; }
- 将验证码存储在会话中并将其与变量进行比较
- 寻找所有已发布变量
foreach ($_POST as $key => $value) { if ( strpos( strtolower( $key ), 'email' ) !== false ) { $value = filter_var( $value, FILTER_SANITIZE_EMAIL ); } else { $value = filter_var( $value, FILTER_SANITIZE_STRING ); } $value = htmlspecialchars( $value ); $key = filter_var( $key, FILTER_SANITIZE_STRING ); $key = htmlspecialchars( $key ); $message_html .= "<h2>$key</h2><p>$value</p>"; }
- 以 HTML UTF-8 格式发送消息,以与大多数语言兼容
- 重定向到感谢页面 URL
header('Location: '. $thank_you_url);
PHP 邮件技术
PHP 中有很多邮件技术; PEAR Mail、PHP Mailer 和 mail 函数。但是,我们只使用 mail 函数,因为它很常见且简单。
PHP 电子邮件验证
PHP FILTER_SANITIZE_EMAIL 过滤器
从电子邮件地址中删除所有非法字符
$from_email = filter_var($from_email, FILTER_SANITIZE_EMAIL);
PHP FILTER_VALIDATE_EMAIL 过滤器
检查变量 $email
是否为有效的电子邮件地址
if (!filter_var($from_email, FILTER_VALIDATE_EMAIL)) {
$Err .= 'Invalid email format<br>';
$from_email = "web_page@$domain";
}
使用正则表达式在 PHP 中验证电子邮件
$pattern = '/^[\w.-]+@[\w.-]+\.[A-Za-z]{2,6}$/';
if(!preg_match($pattern, $from_email)){
$Err .= 'Invalid email format<br>';
$from_email = "web_page@$domain";
}
历史
- 2016 年 10 月 14 日:初始版本
- 2021 年 5 月 7 日:文章更新