天道酬勤,学无止境

PHP 和联系表格(PHP and contact form)

问题

我无法为我的联系表格获取正确的 php 脚本。 我设法让它给我发电子邮件,但它没有在电子邮件中显示姓名、电子邮件或文本。

PHP脚本

<?php
$name = $_POST['name'];
$email = $_POST['email'];
$message = $_POST['message'];
$to = 'myemail@email.comm';
$subject = 'Hello';

mail ($to, $subject, $message, "From: " . $name);
echo "Your Message has been sent.";
?>

联系表

<form role="form" action="contact.php">
<div class="form-group">
<label for="InputName">Name</label>
<input name="name" type="text" class="form-control" id="InputName" placeholder="Enter Name">
</div>

<div class="form-group">
<label for="InputEmail">Email Address</label>
<input name="email" type="email" class="form-control" id="inputEmail" placeholder="Enter email">
</div>

<div class="form-group">
<label for="InputText">Message</label>
<input name="message" type="text" class="form-control" id="InputText" placeholder="Enter Text">
</div>

<button name="submit" type="submit" class="btn btn-default">Send</button>
</form>
回答1

您正在使用 POST 变量,但您的表单如下:

<form role="form" action="contact.php">

没有定义 POST 方法。 当未定义方法时,表单默认为 GET。

因此,您需要将表单更改为

<form role="form" action="contact.php" method="post">

从您留下的评论中:

“我仍然有一个问题,他们没有给我输入的电子邮件,而是给了托管公司创建的电子邮件,这是不好的。”

答:这很可能是因为您在代码中使用From:的方式,即此人的姓名。 邮件需要一个电子邮件地址。

代替:

mail ($to, $subject, $message, "From: " . $name);

和:

mail ($to, $subject, $message, $header);

并在$subject = 'Hello';下添加以下内容$subject = 'Hello';

$header = "From: ". $name . " <" . $email . ">\r\n";

这样,您将在电子邮件中看到此人的姓名,同时具有有效的“发件人”标题。

  • 访问http://php.net/manual/en/function.mail.php以获取有关邮件标题的更多信息。

补充笔记:

我还建议您使用以下方法测试是否有任何字段未留空:

if(!empty($_POST['name']) && !empty($_POST['email']) && !empty($_POST['message']))
{
    // execute code
}

否则,任何人都可以在没有任何信息的情况下发送电子邮件。

您还可以添加else{}它像else { echo "Please fill in all the fields."; } else { echo "Please fill in all the fields."; }

  • 这是一个非常基本的方法。
回答2

您的表单需要该属性

method="POST"

如果没有这个,浏览器默认为method="GET" ,它在 url 中提交表单,例如http://example.com/default.php?name=First%20Last&email=...

回答3

您应该指定 POST 方法:

<form role="form" method="POST" action="contact.php">
标签

受限制的 HTML

  • 允许的HTML标签:<a href hreflang> <em> <strong> <cite> <blockquote cite> <code> <ul type> <ol start type> <li> <dl> <dt> <dd> <h2 id> <h3 id> <h4 id> <h5 id> <h6 id>
  • 自动断行和分段。
  • 网页和电子邮件地址自动转换为链接。

相关推荐
  • 网站上的php联系表格和回复电子邮件(php Contact Form on website and reply-to email)
    问题 我正在使用Rapidweaver制作的Mediatemple网格服务器上浏览一个网站上的PHP联系人表单。 它运作良好,只不过它生成的发给我们info@ourdomain.com的电子邮件以serveradmin@ourdomain.com的形式发送。 我认为服务器仅使用垃圾箱/黑洞地址。 有什么方法可以调整我的php或更高版本的服务器设置,以将邮件作为用户在联系表单本身上填写的回复地址发送? 为什么? 好吧,Google托管了该域的电子邮件,我想将其罐头回复用作自动回复。 当然,问题在于自动响应发送到serveradmin@ourdomain.com,而不是他在表单上填写的用户的电子邮件地址。 感谢您的帮助! -猎人 回答1 您可以在邮件中添加标题 <?php $to = 'nobody@example.com'; $subject = 'the subject'; $message = 'hello'; $headers = 'From: webmaster@example.com' . "\r\n" . 'Reply-To: webmaster@example.com' . "\r\n" . 'X-Mailer: PHP/' . phpversion(); mail($to, $subject, $message, $headers); ?> 见邮件phpdoc
  • php联系表格中的回复地址(reply-to address in php contact form)
    问题 我用php联络表购买了一个简单的网站模板。 除了实际接收通过表单发送的消息这一小小的例外,其他所有功能都可以正常工作。 也就是说,联系表单将显示成功消息,但该消息永远不会到达。 经过长时间的托管服务后,我发现为了避免欺骗,他们不允许将电子邮件发送到他们不托管的发件人地址。 就是说,如果该网站的访问者以表格形式写下他的gmail / yahoo等信息,我将不会得到它。 他们建议使用与其托管的电子邮件地址作为“发件人”地址,并将访问者的输入电子邮件作为“回复”地址。 这似乎是合理的。 所以我挖了一下(例如:PHP回复错误-附带管理员电子邮件,而不是联系表格的发件人,网站上的php联系表格和回复电子邮件) 答案表明添加了标头组件: $headers = 'From: webmaster@example.com' . "\r\n" . 'Reply-To: webmaster@example.com' . "\r\n" . 'X-Mailer: PHP/' . phpversion(); 并将其添加到 mail($to, $subject, $message, $headers); 这就是我所做的。 $ email在此模板中定义为访问者的电子邮件,因此我所做的是: $subject = "Contact Form: $name"; $message = "$message";
  • 联系表格 7 中的产品名称 WooCommerce(Product Name WooCommerce in Contact Form 7)
    问题 我也有 woocommerce 插件和联系表 7 插件。 在产品详细信息页面底部的选项卡中,我有一个名为 enquire 的自定义选项卡。 我正在嵌入我创建的表单之一。 虽然我只是想在表格中呼应产品标题,这样人们就不必自己填写了。 这似乎不起作用.. <p>Your Name (required)<br /> [text* your-name] </p> <p>Your Email (required)<br /> [email* your-email] </p> <p>Subject<br /> </p> <?php echo get_the_title( 'id' ); ?> <?php echo WC_Product::get_formatted_name(); ?> <p>Your Message<br /> [textarea your-message] </p> <p>[submit "Send"]</p> 有人有什么主意吗 ? 提前致谢 回答1 我不知道你是如何添加标签的,因为你没有提到任何东西.. 但是您可以通过在主题的functions.php添加以下代码来实现: add_filter( 'woocommerce_product_tabs', 'product_enquiry_tab' ); function product_enquiry_tab(
  • 没有PHP的电子邮件联系表格(Email contact form without PHP)
    问题 我想在我正在创建的网站上使用联系表,但是由于客户不希望使用PHP,因此不可以使用PHP。 是否有一种聪明的方法可以解决此问题,例如发送电子邮件参数(非标准参数)或使用外部联系表? 是否有一些不使用广告并且可以轻松修改为其他语言的好东西? 谢谢你。 回答1 有数百种可用于联系表单的可嵌入(最有可能是基于iframe的)解决方案,使您可以使用服务器端语言(如PHP)来解决问题。 只是一个快速的谷歌搜索会给你一些。 或者,您可以使用HTML制作表单,并具有一个实际上是mailto:链接的“提交”按钮,然后您可以在表单输入更改时修改该mailto的参数。 唯一的缺点是,它给用户带来不便,因为它随后打开了他们的电子邮件客户端,而他们不得不实际发送它。 就个人而言,我会说服客户,但是如果这不可能,那么您可以选择。 回答2 签出表格。 https://github.com/asm-products/formspree 您只需输入以下操作即可: <form action="http://formspree.io/you@email.com" method="post"> <input type="text" name="name"> <input type="email" name="_replyto"> <input type="submit" value="Send">
  • 重新配置 PHP Mail() Smarty 联系表单(Reconfiguring PHP Mail() Smarty Contact Form)
    问题 我使用 Prestashop 作为我的电子商务购物车和 CMS 解决方案,并且在接收通过联系表格发送的电子邮件时遇到问题。 我四处询问并发现问题是由于我需要将“发件人”地址分配为来自我的域(例如 do_not_reply@mydomain.com)和用户输入的电子邮件以分配不同的变量(例如'回复邮件')。 但是,Prestashop 联系表单是使用 PHP Smarty 模板引擎创建的,该引擎具有单独的 contact-form.php 文件和我在下面显示的单独的 contact-form.tpl。 首先contact-form.php:- <?php $useSSL = true; include(dirname(__FILE__).'/config/config.inc.php'); include(dirname(__FILE__).'/header.php'); $errors = array(); $smarty->assign('contacts', Contact::getContacts(intval($cookie->id_lang))); if (Tools::isSubmit('submitMessage')) { if (!($from = Tools::getValue('from')) OR !Validate::isEmail($from))
  • 将选择的产品变体数据传递到联系表 7 查询表(Pass the chosen product variations data into Contact Form 7 enquiry form)
    问题 使用 WooCommerce,我使用联系表 7 和产品信息请求插件在单个产品页面内添加一个表单,因为我需要一个功能,允许用户发送有关产品的查询请求(简单的联系表)。 看到这个截图你就明白了: 我所有的产品都是具有变化的可变产品(来自属性) 。 有什么方法可以检索客户选择的变体并通过联系表格 7 发送吗? 例如 : 用户选择颜色 black 和 size s,然后填写表格,发送电子邮件时,除了 Receive the classic information (name, email ecc..) 我还收到选择的属性(在本例中为black和s ) 回答1 更新:添加了 WC 3+ 兼容性 我已经对其进行了测试,它不会发送与所选变体相关的任何数据,因为它只是在“添加到购物车”按钮下方(在单个产品页面中)输出所选的联系表格。 此外,这个插件已经超过 2 年没有更新了,所以它有点过时了。 好新:一个可行的解决方案 我找到了这个相关的答案:联系表格 7 中的产品名称 WooCommerce 它解释了如何在产品选项卡中设置联系表单 7 短代码并在电子邮件中显示所选产品标题。 所以从这个答案中,我已经转换了代码,就像插件一样使用它(就在添加到购物车按钮的下方)。 在此示例/答案中,我为产品变体设置了可变产品 2 属性: Color和Size 。 这是我将在代码中使用的表单的设置Contact
  • 联系表格PHP重定向不起作用(contact form PHP redirect is not working)
    问题 我在联系表单上提交消息后尝试重定向到我的主页,该表单发送了电子邮件,但我收到以下消息: Array ( [name] => Abdo [company] => Mediabyrån A&B [email] => a.el-madhoun@hotmail.com [content] => Hejsan [contact_to] => info@web.se ) 警告:无法修改标头信息-已在/ customers / 4/5 / a / webelite中发送的标头(输出始于/customers/4/5/a/webelite.se/httpd.www/kontakt.php:3)。第39行的se / httpd.www / kontakt.php 我的联系表格; <form action="kontakt.php" method="post"> <p><input type="text" required="required" id="name" name="name" class="text_input" size="22" /> <label for="name">Namn *</label></p> <p><input type="text" required="required" id="company" name="company" class="text_input"
  • PHP的联系表格有时发送空白电子邮件(php contact form sending blank emails sometimes)
    问题 我遍历了很多表格,似乎找不到答案。 我一直在解决这个问题,并且我的php表单已经关闭了好几天。 希望在这里找到帮助。 表格工作完美。 所有字段在提交后都可以正常工作,但是似乎总是从第二天到第二天发出了第二张表格,但该表格是空白的。 如果对为什么会发生有任何建议,那将是有帮助的。 <?php $name = $_POST['name']; $email = $_POST['email']; $subject = $_POST['subject']; $comments = $_POST['comments']; // recipient address $to = "grandforkssuites@gmail.com"; // subject of email $re = "Contact Us Form Delivery"; // message creation $contact = "Name:".$name."\nEmail:".$email."\nSubject:".$subject."\r\n"; $txt = "Comments:".$comments."\r\n"; $fmsg = $contact."\r\n".$txt; $msg = wordwrap($fmsg, 70); // send email mail($to,$re,$msg); ?>
  • 联系表格,包括前一页的推荐(contact form including referral of previous page)
    问题 我有一个使用 POST 的 php 联系表单,我想在表单上自动包含引用页面,即链接到联系表单的网站。 这通常在我的网站内。 例如, www.website.com/nothere.php 返回 404.php(以 www.website.com/nothere.php 作为地址) 在 404 页面上,我有一个指向feedback.php 的链接,这是一个联系表格。 我希望提交的表单中包含引用 URL(在本例中为“www.website.com/nothere.php”)。 我知道我可以使用此代码: $ref = getenv("HTTP_REFERER"); 因此,我将其添加到页面顶部的 php 中(这是一个片段): $SendTo = "web@website.com"; $Subject = "Website Feedback"; $FromString = "From: ".$_POST['eaddress']."\r\n"; $ref = getenv("HTTP_REFERER"); 但是,我如何对 indhold 进行编码,以便将推荐信打印在电子邮件上? $Indhold .= "Referring page: ".$_POST['$????']."\n"; 有人可以帮助我在上面的行中添加什么吗? 或者我需要以不同的方式解决这个问题吗? 非常感谢! 安迪 回答1
  • 不使用 PHP 提交联系表单(Submit Contact Form without using PHP)
    问题 我仍然是一名学生,今天我们的讲师告诉我们,提交联系我们表单而不必使用 mailto: 功能的唯一方法是使用 PHP。 我发誓去年另一位讲师向我们展示了一种仅使用 javascript 的方法。 是否可以使用基本表格和 javascript 提交反馈/联系表格? 如果是这样,您介意分享一个示例吗? 提前致谢 回答1 您可以使用 JavaScript 重定向到mailto:并带有一些参数,但这并不理想。 还要记住, mailto: URL 中电子邮件地址以外的任何内容都是非标准的。 虽然它适用于许多浏览器,但它并不适用于所有浏览器。 发送电子邮件的最佳方式是在服务器端进行,使用 PHP 或其他方式。 回答2 表单是由浏览器基于 HTML 创建/提交的。 JavaScript 通常用于增强表单(以许多不同的方式)。 基本表单将其数据作为 POST 请求发送。 要对数据执行任何有用的操作,您需要服务器端代码来处理 POST 请求(例如 PHP)。 回答3 您不能向 javascript 提交表单并期望它做任何事情。 您需要一个服务器端脚本才能接收表单进行处理。 Mailto 是浏览器/操作系统特定的方法,不一定要调用任何东西。 Javscript 可以在进入服务器进行进一步处理之前处理您的表单,但就像我说的那样,您需要提交到服务器。 回答4 如果没有 PHP 或浏览器支持
  • 没有刷新的联系表确认消息(Contact Form Confirmation Message Without Refresh)
    问题 我在发送消息后使用重定向的联系表单,但我希望用户收到“消息已发送”警报,该警报将在联系表单的某处出现和消失。 这意味着页面永远不会刷新,用户也不会离开页面或联系表单。 这可能吗? 如果是这样,有人可以告诉我我需要添加到当前下面的代码... 我正在使用以下表格: <form id="contact-form-face" class="clearfix" action="http://www.demo.com/php/contactengine.php"> <input type="text" name="email" value="Email" onFocus="if (this.value == 'Email') this.value = '';" onBlur="if (this.value == '') this.value = 'Email';" /> <textarea name="message" onFocus="if (this.value == 'Message') this.value = '';" onBlur="if (this.value == '') this.value = 'Message';">Message</textarea> <input class="contact_btn" name="submit" type="submit"
  • 将Google转换代码添加到WordPress联系表格7(Adding Google Conversion code to WordPress Contact Form 7)
    问题 我找到了将Google转换代码添加到WordPress Contact Form 7插件的教程,可以在此处找到。 目前,我已添加 <script type="text/javascript"> $(".wpcf7-form").submit(function(){ var google_conversion_id = "12345678910"; var google_conversion_label = "xxxxxxxxxxx"; var image = new Image(1,1); image.src = "http://www.googleadservices.com/pagead/conversion/"+google_conversion_id+"/?label="+google_conversion_label+"&script=0"; }); </script> 到我的页脚,但无法发送正确的结果。 有人可以通过WordPress的控制面板帮助我解决应添加到“联系表单”插件中的内容,以使我的Google Analytics(分析)显示正确的结果。 我不希望重定向到另一个页面。 回答1 您步入正轨。 在运行此脚本时,您会将结果记录在服务器上。 实现此目的的最简单,最常见的方法是将脚本放置在单独的页面上(通常是thank-you.php),并将用户重定向到该页面
  • Codeigniter 联系表格电子邮件(Codeigniter contact form email)
    问题 我正在尝试在 Codeigniter 中设置一个联系表单(我使用 Apache 在 xampp 上运行并且我设置了一个虚拟主机)。 我有实际的表单工作,但是当我尝试将它链接起来以便它通过电子邮件发送结果时,我收到一个错误。 我环顾四周并尝试了一些不同的解决方案,但我无法弄清楚我做错了什么。 控制器: public function contact() { $this->load->helper('form'); $this->load->library('form_validation'); $this->form_validation->set_rules('name', 'your name', 'required', array('required'=>"<p class='required'>Please provide %s</p><br>")); $this->form_validation->set_rules('email', 'your email address', 'required', array('required'=>"<p class='required'>Please provide %s</p><br>")); if($this->form_validation->run() == FALSE) { $this->load->view(
  • Wordpress 中的 PhP 联系表(PhP Contact form in Wordpress)
    问题 所以我买了一个主题,它有一个简单的 PHP 联系表单,允许用户互相发送消息,但是当发件人填写表单并提交时,电子邮件来自我默认的 Wordpress 管理员电子邮件,而不是用户输入的电子邮件地址表格。 因此,如果收件人试图回复他们的电子邮件,它会来找我(管理员)而不是发送电子邮件的人。 我在这里遗漏了什么......似乎很简单。 我试过改变它并使用 $headers 等,但没有任何效果......总是来自我的管理员电子邮件。 这是表单代码: <form method="post"><input type="hidden" value="<?php the_ID(); ?>" name="pid_rep" /> <li> <h3><?php echo __('Your Email'); ?>:</h3> <p><input type="text" size="50" class="do_input" name="email" /></p> </li> <li> <h3><?php echo __('Message'); ?>:</h3> <p><textarea rows="4" cols="40" class="do_input" name="message"></textarea> <<input type="submit" name="contact" value="<
  • 如何更改联系表单7的表单操作网址?(how to change form action url for contact form 7?)
    问题 我在具有多种形式的wordpress网站中使用联系表格7。 我需要将一种表单定向到与其他表单不同的表单操作URL。 我在下面找到了上一个线程的答复,但不确定如何处理。 有人可以指定“附加设置”中需要包含哪些确切的代码,以及functions.php中的代码是什么样的吗? 谢谢你的帮助! diff的回复。 线程,我不完全了解... *是的,您必须使用此过滤器挂钩wpcf7_form_action_url更改表单中的“ action”属性。 (代码是什么?)您可以将钩子添加到主题的functions.php中,然后在ASP页中处理表单数据。 (代码?) * 回答1 由于您根本不熟悉PHP代码,因此,我将为您提供一些Wordpress API中的速成课程。 首先,您需要了解函数和变量之间的区别。 变量是单个实体,旨在表示任意值。 该值可以是任何值。 数字,某人的姓名或复杂数据。 函数是执行一系列动作以发送回(或返回)变量或更改给定变量的东西。 <?php $a = 1; //Number $b = 'b'; //String *note the quotes around it* $c = my_function(); //Call to a function called my_function echo $a; //1 echo $b; //b echo $c; //oh
  • 将表格结果从联系表格7导出到PDF(fPDF)(Exporting form results from Contact form 7 to PDF (fPDF))
    问题 我正在尝试将用户输入到WordPress联络表7中的值通过fpdf导出到PDF。 这就是我设置的内容,我可以生成PDF,但是无需从表单中动态生成值。 functions.php add_action( 'wpcf7_before_send_mail', 'save_application_form'); function save_application_form($cf7) { /* GET EXTERNAL CLASSES */ require(TEMPLATEPATH.'/fpdf/fpdf.php'); $values = $cf7->posted_data; echo $values['first-name']; /* example code to generate the pdf */ $pdf = new FPDF(); $pdf->AddPage(); $pdf->SetFont('Times','B',16); $pdf->Write(5,'first-name'); $pdf->SetFont('Arial','B',16); $pdf->Output(TEMPLATEPATH.'/fpdf/pdf.pdf', 'F'); /* add the pdf as attach to the email*/ $cf7->uploaded_files =
  • 联系表 7 自动添加 p 标签(Contact Form 7 auto added p tags)
    问题 我在联系表格 7 编辑器中有下一个代码 <div class="row"> <div class="col-sm-8 col-sm-offset-2"> <div class="row"> <div class="col-sm-4"> [text* name class:border-field placeholder "Name"] </div><!-- End of col --> <div class="col-sm-4"> [email* email class:border-field placeholder "Email"] </div><!-- End of col --> <div class="col-sm-4"> [text subject class:border-field placeholder "Subject"] </div><!-- End of col --> </div><!-- ENd of row --> </div><!-- End of col --> </div><!-- ENd of row --> <div class="row"> <div class="col-sm-8 col-sm-offset-2"> [textarea message class:border-field placeholder "Message"]
  • 如何在联系表格 7 中发送之前更改数据?(How to change data before sending in Contact form 7?)
    问题 我的网站上有联系表格。 而且我需要在发送邮件之前更改一个字段的值。 例如name 。 我像这样尝试: function contactform7_before_send_mail( $cf7 ) { $cf7->posted_data['your_name'] = 'John Doe'; } add_action( 'wpcf7_before_send_mail', 'contactform7_before_send_mail' ); 但是在电子邮件中出现了表单中指定的值。 回答1 最近遇到了同样的问题。 例如,此表单中有一个名为“[s2-name]”的字段。 当访问者提交表单时,我想获取此字段,然后更改并发送。 经过一些信息搜索,我写了这段代码: add_action( 'wpcf7_before_send_mail', 'wpcf7_do_something_else_with_the_data', 90, 1 ); function wpcf7_do_something_else_with_the_data( $WPCF7_ContactForm ){ // Submission object, that generated when the user click the submit button. $submission = WPCF7_Submission
  • 我的联系表格发送了空白的body_messages(My contact form sends blank body_messages)
    问题 我是PHP新手,请多多包涵。 当我按提交时,我的表格发送空的电子邮件。 任何帮助将是巨大的。 这是我的表格: <form class="contact_form" action="kontakt.php" method="post"> <p><input type="text" required="required" id="name" name="name" class="text_input" value="" size="22" /> <label for="name">Namn *</label></p> <p><input type="text" required="required" id="company" name="company" class="text_input" value="" size="22" /> <label for="company">Företag *</label></p> <p><input type="email" required="required" id="email" name="email" class="text_input" value="" size="22" /> <label for="email">Epost *</label></p> <p><textarea required="required"
  • WordPress在联系表格7中发送有关重定向的表格数据(Wordpress Send Form Data on Redirection in Contact Form 7)
    问题 我使用的是流行的wordpress插件,称为Contact on_sent_ok: "location = 'http://example.com/';"通过在on_sent_ok: "location = 'http://example.com/';"添加以下代码, on_sent_ok: "location = 'http://example.com/';"轻松地将表单提交到任何页面后重定向on_sent_ok: "location = 'http://example.com/';" ,但它不携带输入的表单值,因为它是AJAX提交。 网站指示说“最简单的方法是使用on_sent_ok JavaScript操作钩子。 通过使用此挂钩,您可以指定要在成功提交表单后运行的JavaScript代码。 您将在联系表单管理页面的底部找到“其他设置”字段。” 有人能帮助或解释我如何在重定向中保留表单值吗? 这是我从联系表格7中获得的重定向页面 http://contactform7.com/redirecting-to-another-url-after-submissions/ 回答1 只需使用此钩子: on_sent_ok: "location = 'https://gettinmobile.com/my-account/checkout/?level=1&' + $('form