PHP 联系表单在查看页面时发送空白电子邮件

2024-01-24

谁能帮助我阻止每次查看页面时发送空白电子邮件?

这是我正在使用的代码。

<?php
// define variables and set to empty values
$nameErr = $emailErr = $genderErr  = "";
$name = $email = $gender = $comment =  "";

if ($_SERVER["REQUEST_METHOD"] == "POST") {
   if (empty($_POST["name"])) {
     $nameErr = "Name is required";
   } else {
     $name = test_input($_POST["name"]);
     // check if name only contains letters and whitespace
     if (!preg_match("/^[a-zA-Z ]*$/",$name)) {
       $nameErr = "Only letters and white space allowed"; 
     }
   }

   if (empty($_POST["email"])) {
     $emailErr = "Email is required";
   } else {
     $email = test_input($_POST["email"]);
     // check if e-mail address syntax is valid
     if (!preg_match("/([\w\-]+\@[\w\-]+\.[\w\-]+)/",$email)) {
       $emailErr = "Invalid email format";
     }
   }

   if (empty($_POST["comment"])) {
     $commentErr = "Comment is required";
   } else {
     $comment = test_input($_POST["comment"]);
     if (!preg_match("/^[a-zA-Z ]*$/",$comment)) {
       $commentErr = "Please leave a comment.";      
     }
   }
}

function test_input($data) {
   $data = trim($data);
   $data = stripslashes($data);
   $data = htmlspecialchars($data);
   return $data;
}


//create the body of the email
$body = "Name: {$_POST['name']}
\n\nEmail: {$_POST['email']}
\n\nComments: {$_POST['comment']}";
$body = wordwrap($body, 70);

// The mail function
mail('[email protected] /cdn-cgi/l/email-protection', 'Contact Us Submission', $body, "From: {$_POST['email']}");


?>
<p><span class="error">* required field.</span></p>
<form method="post" action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]);?>"> 
   Name: <input type="text" name="name" class="text" value="<?php echo $name;?>">
   <span class="error">* <?php echo $nameErr;?></span>
   <br>
   Email: <input type="text" name="email" class="text" value="<?php echo $email;?>">
   <span class="error">* <?php echo $emailErr;?></span>
   <br>
   Comment: <textarea name="comment" rows="3" cols="20"><?php echo $comment;?></textarea>
   <span class="error">* <?php echo $commentErr;?></span><br>   
   <input type="submit" name="submit" value="Submit" class="submit"> 
<?php
//if everything is ok, print the message:
if ($_SERVER['REQUEST_METHOD'] == 'POST') {
if ($name && $email && $comment) {
    echo "<p>Thank you, <b>$name</b>, for contacting us.</p>
    <p> We will email you back at <i>$email</i> in a couple days.</p>\n";
} else { //missing form value.
    echo '<p class="error">Please go back and fill out the form again.</p>';
    return false;
}
}

?>
</form>

将所有表单逻辑放入您的if ($_SERVER["REQUEST_METHOD"] == "POST") {陈述。不仅仅是验证:

if ($_SERVER["REQUEST_METHOD"] == "POST") {
   if (empty($_POST["name"])) {
     $nameErr = "Name is required";
   } else {
     $name = test_input($_POST["name"]);
     // check if name only contains letters and whitespace
     if (!preg_match("/^[a-zA-Z ]*$/",$name)) {
       $nameErr = "Only letters and white space allowed"; 
     }
   }

   if (empty($_POST["email"])) {
     $emailErr = "Email is required";
   } else {
     $email = test_input($_POST["email"]);
     // check if e-mail address syntax is valid
     if (!preg_match("/([\w\-]+\@[\w\-]+\.[\w\-]+)/",$email)) {
       $emailErr = "Invalid email format";
     }
   }

   if (empty($_POST["comment"])) {
     $commentErr = "Comment is required";
   } else {
     $comment = test_input($_POST["comment"]);
     if (!preg_match("/^[a-zA-Z ]*$/",$comment)) {
       $commentErr = "Please leave a comment.";      
     }
   }


    //create the body of the email
    $body = "Name: {$_POST['name']}
    \n\nEmail: {$_POST['email']}
    \n\nComments: {$_POST['comment']}";
    $body = wordwrap($body, 70);

    // The mail function
    mail('[email protected] /cdn-cgi/l/email-protection', 'Contact Us Submission', $body, "From: {$_POST['email']}");
}

仅供参考,您对标头注入 https://stackoverflow.com/questions/1055460/how-to-sanitze-user-input-in-php-before-mailing。这是您在将此代码发布到生产环境之前应该解决的问题。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

PHP 联系表单在查看页面时发送空白电子邮件 的相关文章

  • Laravel 无法连接 Oracle

    我在用着耶吉拉 laravel oci8 https github com yajra laravel oci8用于 Oracle 与 Laravel 的连接 但我无法从客户端 PC 连接到 Oracle 服务器 showing this
  • 从 php/linux 获取 pdf 的布局模式(横向或纵向)

    给定一个 PDF 如何使用 PHP lib 或 Linux 命令行工具获取 PDF 的布局模式 或相对宽度 高度 Using http www tecnick com public code cp dpage php aiocp dp tc
  • 如何向 Django 表单添加表单控件?

    我尝试将表单控件添加到我为 Django 制作的表单应用程序中 我已经创建了该应用程序 并希望将表单添加到引导程序模板中 但是我不知道如何为我的电子邮件字段添加引导程序的更时尚的文本框 我希望最终得到类似于此引导模板一角的登录字段的内容 尽
  • Codeigniter:将 sess_match_ip 设置为 FALSE 是否仍然安全

    我正在开发一个网站 来自某些国家 地区的访问者面临 codeigniter 缓存系统的问题 缓存在一两个请求后被删除 经过深入调查后 我将 sess match ip 和 sess match useragent 设置为 FALSE 现在一
  • 在每次长循环迭代时回显“字符串”(flush() 不起作用)

    我有一个需要很长时间才能执行的循环 并且我希望脚本在循环迭代完成时显示一些内容 echo Hello flush for i 0 i lt 10 i echo i 5 10 sec execution time flush 在整个脚本完成之
  • Google PageSpeed Insights API 无法正常工作 [PHP]

    我是 PHP 的初学者 所以也许有人可以帮助解决这个问题 我的网络应用程序显示 Google PageInsights API 错误 这是代码 我尝试将版本更改为 v2 但仍然不起作用 public function getPageSpee
  • 无法登录 mediawiki:为了防止会话劫持而取消?

    我多年来一直使用托管在 AWS EC2 实例上的私有 mediawiki 我认为某些扩展出了问题 特别是在数学渲染过程中停止了 所以我尝试使用 Google Chrome 浏览器重新加载页面 缓存全部被删除 之后 我无法登录并看到此消息 您
  • 如何实现嵌套注释?

    我想在我的网站上显示评论 如下所示 li Parent ul li child one li li child two ul li grandchild li li other grandchild li ul li ul li li An
  • strpos 0==false 问题?

    我使用 strpos 来查找一个字符串在另一个字符串中的位置 我首先检查是否在那里找到了该字符串 这是我的台词 if strpos grafik data ss1 lt gt false strpos grafik data ss2 lt
  • 如何关闭 Zend Server 中的默认 HTTP 状态代码错误?

    每次我在 PHP 代码中返回一些状态代码时 Zend Server 都会在我的网站底部附加以下错误 带有我返回的 HTTP 代码的消息 例如 如果我返回 401 它会在我的 401 页面上附加另一个 401 错误 有什么办法可以关掉它吗 我
  • 从普通电话拨打时如何将分机自动传递到 Twilio 号码?

    我们有一个付费 Twilio 帐户 例如 对于荷兰 我们有一个唯一的号码 用户可以通过手机拨打该号码 这一切都好 现在 我们希望扩展我们的服务 并向该单一 Twilio 电话号码添加 附加许多分机 对于每个分机 我们希望分配 转发 我们代理
  • HTML/PHP 中的 POST 和 GET 有什么区别[重复]

    这个问题在这里已经有答案了 我正在编写一个 PHP 脚本 但我似乎无法真正让它工作 我正在测试基础知识 但我不太明白 GET 和 POST 意味着什么 有什么区别 我在网上看到的所有定义对我来说没有多大意义 到目前为止我编写的代码 但由于我
  • 从 mysql 检索数据并通过电子邮件发送

    我有一个 php 页面 它显示 mysql 数据库中每个用户的课程表数据 如下所示 result mysql query sql echo table border 0 thead tr th Class Link th th Studen
  • 清理 php 中的句子

    标题可能听起来很奇怪 但我有点尝试设置这个 preg replace 来处理文本区域的混乱写入者 它必须 如果有感叹号 则不应连续出现另一个感叹号 如果有 则逗号胜出 并且必须是 当昏迷前有一个 空格时 应将其减少到零 该句子不能以逗号开头
  • Laravel - LIKE 运算符来搜索加密值

    我正在尝试在 Laravel 应用程序中实现一个搜索模块 可以按名称过滤用户 为了保护用户 name 列行在数据库上加密 我面临的问题是下面的查询总是返回 0 结果 我在搜索数据库之前对搜索输入值进行加密 patients DB selec
  • 帮助我将以十六进制表示的长值转换回日期/时间

    我有一个日期值 据说它是 8 个字节 一个 long 又名 int64 值 并转换为十六进制 60f347d15798c901 我如何使用 PHP 将这个和类似的值转换为时间 日期 将其转换为十进制给我 96 243 71 209 87 1
  • 从数据库结果生成多维数组的递归函数

    我正在编写一个函数 它接受页面 类别数组 来自平面数据库结果 并根据父 ID 生成嵌套页面 类别项目数组 我想递归地执行此操作 以便可以完成任何级别的嵌套 例如 我在一个查询中获取所有页面 这就是数据库表的样子 id parent id t
  • 在 PHP 扩展中,推荐从 std::string 返回值的方法

    我们有一个简单的 PHP 函数 其目的是调用 C 自由函数std string callLibrary std string 并返回其std string返回值 目前看起来是这样的 PHP FUNCTION call library cha
  • PHP 指针与引用

    在 PHP 中 使用指针有什么区别 例如 function foo var var 3 a 0 foo a 以及参考 function foo var var 3 a 0 foo a 它们都修改了原始变量的值 但是它们内部的表示方式不同吗
  • PHP MySQLi 多次插入

    我想知道准备好的语句是否与具有多个值的普通 mysql query 一样工作 INSERT INTO table a b VALUES a b c d VS sql db gt prepare INSERT INTO table a b V

随机推荐

  • Selenium webdriver 和多语言

    我使用selenium webdriver java 例如 当我想通过 xpath 获取一些数据 文本时 driver findElement By xpath table 3 tbody tr td table 1 tr 1 td 1 g
  • Django:使用电子邮件作为 USERNAME_FIELD 是否需要扩展 AbstractBaseUser?

    与许多其他人一样 我正在尝试将 Django 应用程序配置为使用电子邮件作为用户名字段 我有一些现有的用户帐户 已成功迁移到自定义用户模型 尽管现在自定义模型与 Django 用户模型相同 accounts models py from d
  • jquery img 选择

    我有一个 h4 里面有一个这样的 img 我将点击功能绑定到 h4 这效果很好 但我无法选择其中的img 我想选择 img 以便用 attr src replace up down 重新放置 src attr h4 class collap
  • UILabel中心内容

    这是我的代码 UILabel myLabel myLabel UILabel alloc initWithFrame CGRectMake 20 0 300 480 myLabel lineBreakMode UILineBreakMode
  • mod_rewrite 和 mod_userdir 的问题

    我正在尝试获取其他人组装的正在运行的网站的本地副本 该网站已部署并正常运行 我正在尝试在我的 public html 目录下设置开发版本 该站点使用 mod rewrite 通过执行各种初始化步骤的网关脚本重定向所有流量 我有一个奇怪的问题
  • Altair:如何在烛台图(即:分层图)上使用区间选择

    我正在尝试复制以下堆叠图表 可以通过与底部图表交互来选择顶部图表的域 但使用烛台图 这是一个分层图表 example code for below is here https altair viz github io gallery int
  • 函数向全局变量返回 2 个值

    鉴于这个帖子 https stackoverflow com questions 61217589 set 2 series at once我想问为什么下面的脚本适用于 a b 但不适合 c d 找不到任何文档来解释为什么这不起作用 此示例
  • 如何检查日期(来自日期选择器)是否在其他两个日期之间?目标-c

    我正在尝试从 UIDatePicker MM dd 格式 获取日期并检查它是否在其他两个日期的范围内 我尝试过很多不同的方式 但我想我的想法已经走得太远了 有人可以帮我做得尽可能简单吗 这是我最后一次尝试的代码 NSDateFormatte
  • 如何在没有窗口的情况下使用 Swift 检测 macOS 上的 Caps Lock 状态?

    我努力了KeyDown and NSEvent 但他们需要一个NSWindow对象处于活动状态 我希望我可以在状态栏上放置一个应用程序 并在按下时提醒用户CapsLock 即使用户在任何其他应用程序中 我的应用程序创意没有用于设置或其他任何
  • Mojolicious 基本登录

    我正在 Mojolicious 中寻找身份验证 我有 2 个页面 momcorp1 和 momcorp2 但我不能 在页面之间 有人知道如何做到这一点 我正在阅读有关 under 的内容 但我不知道如何做到这一点 另一种形式是使用 Mojo
  • 如何限制 NSTokenField 中的令牌数量?

    我有一个 NSTokenField 其中的令牌是在按 Enter 键时创建的 我想限制该字段中的令牌数量 举例来说 应该只允许用户依次输入 2 个令牌 之后 既不应该允许用户设置Token 也不应该允许用户进一步搜索 简而言之 用户应该在
  • 为什么通过 goto 向后移动时会调用析构函数[重复]

    这个问题在这里已经有答案了 可能的重复 会使用goto泄漏变量 https stackoverflow com questions 7334952 will using goto leak variables 在下面的例子中 当goto被称
  • 如何在 ASP.Net MVC 5 站点中设置 NameClaimType?

    我使用 Microsoft 的 本地 组织帐户身份验证机制创建了一个 ASP Net MVC 5 站点 这最终配置为指向我公司的 ADFS 基础设施 我正在取回所有配置的声明 但是 在运行时 ClaimsIdentity Name 为空 这
  • jquery .map 不适用于 IE 10

    我有这个 jquery 代码 tf zoom live click function var n tf thumbs find img attr src var modelid n substr 43 post models get gal
  • Dialogflow 实现 webhook url 支持自签名证书吗?

    我正在使用 Dialogflow 履行网络钩子来处理天气 Dialogflow 显示 启用 Google Assistant 集成后 您只能在履行网址中使用 https 所以 我尝试了 https url 的自签名证书 但我无法获得 web
  • 为 Telnet 会话创建脚本?

    有谁知道创建一个可以连接到 telnet 服务器的脚本的简单方法 执行一些常见的 telnet 操作 然后注销 我正在与不熟悉 telnet 及其需要运行的命令的用户打交道 我想要的只是让他们双击脚本 然后让该脚本自动为他们执行命令 您可能
  • 我可以在命令行上通过 xbuild 将参数传递给 msc 吗?

    xbuild 有没有办法通过命令行或构建脚本将附加参数传递给编译器 具体来说 我想通过 mcs debug 1获取堆栈跟踪内部编译器错误 https travis ci org libgit2 libgit2sharp builds 106
  • 如何将 SOAP 消息解析为 Jaxb 类

    我有一个 SOAPMessage 对象 我想将其解析并转换为一组 Jaxb 类 如何将消息转换为 Jaxb 可以解组的格式 javax xml bind Unmarshaller unmarshal SOAP 消息的正文包含实际数据及其要解
  • 如何在 CoreOS 的 Vagrant 虚拟机实例上运行 python?

    如何在 CoreOS 的 Vagrant 虚拟机实例上运行 python 我想访问 python 解释器 谢谢 您还可以安装python在 CoreOS 上使用下面的脚本 我们称之为install python sh bin bash e
  • PHP 联系表单在查看页面时发送空白电子邮件

    谁能帮助我阻止每次查看页面时发送空白电子邮件 这是我正在使用的代码