65.9K
CodeProject 正在变化。 阅读更多。
Home

PHP 联系我们脚本,无需修改即可运行

starIconstarIconstarIconstarIcon
emptyStarIcon
starIcon

4.88/5 (12投票s)

2016 年 10 月 14 日

CPOL

3分钟阅读

viewsIcon

49473

downloadIcon

997

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, messagecaptcha 作为字段名称
  • 放置您的广告或使您的表单没有广告
  • 您可以自由地放置指向我们的链接,也可以不放置。

关于联系我们代码

From Action

<form action="send.php" method="POST">

字段名称

在您的表单中使用 from_email, from_name, subject, messagecaptcha 作为主要字段名称。

验证码

如果您不希望使用验证码,请将 ‘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 日:文章更新
© . All rights reserved.