使用php从表单中提取值

时间:2016-06-11 20:35:20

标签: php html

我正在尝试从表单中提取值并通过电子邮件发送给他们。它目前只通过电子邮件发送$ to和$ subject值,但不会发送标题或正文组件。任何帮助,将不胜感激。 表格代码:

    <body>
    <div class="form-style-6"  >
    <h1>  <img  src="../assets/img/navBar_logo.png"  style = " padding-                              top: 20px;  padding-right:30px; padding-left: 20px;">  Contact Manager</h1>    
    <form action="contactform_email.php" method="get" name="f1">
    <input type="text" name="name" placeholder="Name" />
    <input type="text" name="email" placeholder="Email" />
    <textarea name="message" placeholder=""></textarea>
    <input type="submit" value="Send" />
   </form>
  </div>
 </body>

  and the PHP to pull the values

   <?php

   $to = "manager@plumorchard.com";
   $subject = "Contact Manager";
   $headers = "Reply-To: ".$_GET['email'];
   $body =  "Name : ". $_GET['name']."\n".
   "Email : ". $_GET['email']."\n".
   "Message : ". $_GET['message']."\n".

    mail($to, $subject, $body, $headers);

     ?>

    <b>Thank you for applying online! The apartment manager will get back to   you shortly.</b>

5 个答案:

答案 0 :(得分:0)

据我所知,您需要使用POST请求来获取textarea的内容。 GET请求不会对间隔和换行句子起作用,因为它们直接放在您的请求所指向的URL中。 POST请求确保您的内容被附加到您的HTTP请求中,因此您实际上可以从中获取所需的所有信息。

另请注意,此代码根本不安全,并且易于使用跨站点脚本!在处理之前始终验证用户输入。

答案 1 :(得分:0)

你的语法是正确的,但你做了一件你不想要的事情

$body =  "Name : ". $_GET['name']."\n".
"Email : ". $_GET['email']."\n".
"Message : ". $_GET['message']."\n".

mail($to, $subject, $body, $headers);

由于邮件与body变量联系,因此无法使用它,因此请将代码更改为:

$body =  "Name : ". $_GET['name']."\n".
"Email : ". $_GET['email']."\n".
"Message : ". $_GET['message']."\n"; // notice I replaced the dot

mail($to, $subject, $body, $headers);

您在邮件末尾有一个点,导致了这一点。 您可以更好地使用POST而不是GET,

由于发送电子邮件非常复杂,请使用phpmailerswiftmailer

等库

答案 2 :(得分:0)

使用POST

  <form action="contactform_email.php" method="POST" name="f1">

在php中

 <?php
 if(isset($_POST)){
 $to = "manager@plumorchard.com";
 $subject = "Contact Manager";
 $headers = "Reply-To: ".$_POST['email'];
 $body =  "Name : ". $_POST['name']."\n".
 "Email : ". $_POST['email']."\n".
 "Message : ". $_POST['message']."\n".

  mail($to, $subject, $body, $headers);
  }
  ?>

答案 3 :(得分:0)

我同意以前关于使用POST和编码器的不安全性的答案,但提出一个想法 - 你似乎在你的最终表单字段之后有一个尾随点,这将是一个问题,因为它将尝试连接下一个element,在本例中是mail函数,$ body元素没有结束分号。:

在连接的$ body语句的最后部分用分号替换点。

"Message : ". $_GET['message']."\n";

答案 4 :(得分:0)

执行此操作...将form =“post”属性添加到表单中,并在php中,只是为了测试,请使用以下行:<?php print_r($_POST); ?> - 这应该将您设置在正确的路径上。