【问题标题】:Mutiple forms using same php mailer script使用相同的 php 邮件程序脚本的多个表单
【发布时间】:2019-08-16 11:49:24
【问题描述】:

我正在处理 php 邮件,这里邮件工作正常。我有多个表单与一个 php 邮件功能合并,并且我有相同的表单字段。现在我正在尝试邮件来自哪个表单我想在 Gmail 中添加一些字符串或标题,以便我可以了解这封邮件来自哪个表单。 HTML

<form action="contact.php" method="POST" class="needs-validation form-horizontal" id="contact" novalidate>
    //here form fileds
</form>

php 邮件

<?php
// Receiver mail id 
$mail_to = 'abcd@gmail.com';

// Mail Subject 
$subject = 'test';

if ($_SERVER["REQUEST_METHOD"] == "POST") {

    if ( isset($_POST['first_name']) ) {
        $first_name = $_POST['first_name'];
    }
    // Message body

    $msg = '<html><body><p>';

    $msg .= '<b> First Name : </b>' . $first_name . '<br/>';

    $msg .= '</p>';
    $msg .= '</body></html>';

    // Mail headers
    $headers  = "MIME-Version: 1.0\r\n";
    $headers .= "Content-Type: text/html; charset=ISO-8859-1\r\n";
    $headers .= 'From: demo1@gmail.com' . "\r\n";

    if( mail( $mail_to, $subject, $msg, $headers )) {
        echo "Thank You!";
    } else {
        die("Error!");
    }
   }
 ?>

【问题讨论】:

  • 你称为php mail的脚本实际上是称为contact.php的脚本吗?
  • $_SERVER['HTTP_REFERER'] 为您提供发出请求的 URL。这可能会解决您的问题,否则您可以使用隐藏输入形式的表单发送附加值
  • @AndTheGodsMadeLove 在同一页面上我有多个表单

标签: php jquery forms


【解决方案1】:

您可以在表单名称中添加隐藏输入:

<form action="contact.php" method="POST" class="needs-validation form-horizontal" id="contact" novalidate>
    //here form fileds
    <input id="source_form_name" name="source_form_name" type="hidden" value="Some name here">

</form>

然后将输入值与电子邮件一起发送:

<?php
// Receiver mail id 
$mail_to = 'abcd@gmail.com';

// Mail Subject 
$subject = 'test';

if ($_SERVER["REQUEST_METHOD"] == "POST") {

    if ( isset($_POST['first_name']) ) {
        $first_name = $_POST['first_name'];
    }
    // Message body

    $msg = '<html><body><p>';

    $msg .= '<b> First Name : </b>' . $first_name . '<br/>';

    $msg .= '</p>';
    $msg .= '<p>';
    $msg .= '<strong>Form Name: </strong>' . $_POST['source_form_name'];
    $msg .= '</p>';
    $msg .= '</body></html>';

    // Mail headers
    $headers  = "MIME-Version: 1.0\r\n";
    $headers .= "Content-Type: text/html; charset=ISO-8859-1\r\n";
    $headers .= 'From: demo1@gmail.com' . "\r\n";

    if( mail( $mail_to, $subject, $msg, $headers )) {
        echo "Thank You!";
    } else {
        die("Error!");
    }
   }
 ?>

【讨论】:

    【解决方案2】:

    只需添加一个隐藏字段,其中包含您要提交的表单的“名称”,例如:

    <form>
      <input type="hidden" name="formname" value="form1"/>
     </form>
     
     <form>
      <input type="hidden" name="formname" value="form2"/>
     </form>

    您可以使用$_POST['formname'] 访问该名称

    【讨论】:

      【解决方案3】:

      首先在您的表单中创建一个隐藏输入,您可以设置表单名称,然后当您提交您的帖子时,您可以获取它的值并创建一个 swtich 案例以将值 os 字符串 mail 传递给每个表单。

      如果你更需要它,你可以创建一个表格调用表单,每个表单都有一个 id、name、string_mail,而不是在加载和提交表单时,你可以获得要发送的字符串邮件,这样你只需要插入数据库表并且不需要开关盒,对于每个新表单,您需要在数据库中插入一个新值。希望能帮到你。

      【讨论】:

        猜你喜欢
        • 2013-04-26
        • 2017-06-13
        • 1970-01-01
        • 1970-01-01
        • 2010-12-23
        相关资源
        最近更新 更多