php - 如何在表单提交之前发布到 .txt 文档

标签 php ajax mailchimp

我想做的是在向 Mailchimp 提交带有某人电子邮件的表单之前,我想将该电子邮件写入 .txt 文件。 Mailchimp 对表单使用“get”,并且“操作”在 mailchimp 上运行,而不是在与表单相同的页面上。这是我的表单代码。

<form id="subscribe-form1" action="https://personaltrainer.us6.list-manage.com/subscribe/post-json?u=4aeb5b710adef51ab754ll02f&amp;id=76420114ff"
    method="get" class="form-inline">
      <div class="input-group">
        <input type="email" class="form-control" placeholder="Email address" name="EMAIL">

        <div class="input-group-btn">
          <button class="btn btn-grn" type="submit button" data-toggle="modal" data-target="#myModal">Sign Up</button>
        </div>
      </div>
      <div style="visibility:collapse;" id="subscribe-result1"> </div>
        <div class="checkbox">
          <label>
            <input type="checkbox" id="mce-group[6917]-6917-0" name="group[6917][1024]" value="1024" checked="checked" style="">
            I agree to recieve FREE newsletter from Personal Trainer Food </label>
        </div>  
     
 <?php //this only works if I change get->post and action ="" but then it does not submit to mail chimp.
//Get the email from POST
$email = $_REQUEST['EMAIL'];
$file = fopen("document.txt","a+");
fwrite($file,$email . "\n");


//redirect
?>    
      

</form>

最佳答案

您可以尝试将值手动附加到 URL,然后重定向到它:

                                    ▼
  <form id="subscribe-form1" action="" method="get" class="form-inline">
      <div class="input-group">
        <input type="email" class="form-control" placeholder="Email address" name="EMAIL">

        <div class="input-group-btn">
          <button class="btn btn-grn" type="submit button" data-toggle="modal" data-target="#myModal">Sign Up</button>
        </div>
      </div>
      <div style="visibility:collapse;" id="subscribe-result1"> </div>
        <div class="checkbox">
          <label>
            <input type="checkbox" id="mce-group[6917]-6917-0" name="group[6917][1024]" value="1024" checked="checked" style="">
            I agree to recieve FREE newsletter from Personal Trainer Food </label>
        </div>  

 <?php //this only works if I change get->post and action ="" but then it does not submit to mail chimp.
//Get the email from GET ◄■■■
$email = $_REQUEST['EMAIL'];
$file = fopen("document.txt","a+");
fwrite($file,$email . "\n");                                          URL PARAMETERS START
fclose($file); // ◄■■■                                                           ▼
header("Location: https://personaltrainer.us6.list-manage.com/subscribe/post-json?u=4aeb5b710adef51ab754ll02f&id=76420114ff&EMAIL=$email"); // ◄■■■
exit; // ◄■■■
?>    

    </form>

请注意,原始“chimp”URL 包含一个 & 符号 $amp; 作为 HTML 符号。我认为我们可以摆脱它并使用“自然”与号&

您的表单中有一个复选框,我们也可以添加它:

fclose($file); // ◄■■■
if ( isset( $_GET["group[6917][1024]"] ) ) // IF CHECKBOX IS CHECKED...
     $chk = "&group[6917][1024]=1024";                                URL PARAMETERS START
else $chk = "";                                                                  ▼
header("Location: https://personaltrainer.us6.list-manage.com/subscribe/post-json?u=4aeb5b710adef51ab754ll02f&id=76420114ff&EMAIL=$email$chk"); // ◄■■■
exit; // ◄■■■

变量 $email$chk 位于 URL 的末尾。生成的 URL 的示例如下:

https://personaltrainer.us6.list-manage.com/subscribe/post-json?u=4aeb5b710adef51ab754ll02f&id=76420114ff&[email protected]&group[6917][1024]=1024

编辑:

在 PHP 代码中添加了 if:

<?php
if ( isset( $_GET["EMAIL"] ) ) {
  $email = $_REQUEST['EMAIL'];
  if ( isset( $_GET["group"] ) )
       $chk = "&group[6917][1024]=1024";
  else $chk = "";
  header("Location: https://personaltrainer.us6.list-manage.com/subscribe/post-json?u=4aeb5b710adef51ab754ll02f&id=76420114ff&EMAIL=$email$chk");
  exit;
}
?>

编辑#2:

<?php
if ( isset( $_GET["EMAIL"] ) ) {
  $email = $_REQUEST['EMAIL'];
  // SAVE EMAIL.
    $file = fopen("document.txt","a");
    fwrite($file,$email . "\n");
    fclose($file);
  if ( isset( $_GET["group"] ) )
       $chk = "&group[6917][1024]=1024";
  else $chk = "";
  header("Location: https://personaltrainer.us6.list-manage.com/subscribe/post-json?u=4aeb5b710adef51ab754ll02f&id=76420114ff&EMAIL=$email$chk");
  exit;
}
?>

编辑#3

使用表单重定向并使用 JavaScript 自动提交:

<?php
if ( isset( $_GET["EMAIL"] ) ) {
  $email = $_REQUEST['EMAIL'];
  // SAVE EMAIL.
    $file = fopen("document.txt","a");
    fwrite($file,$email . "\n");
    fclose($file);
  if ( isset( $_GET["group"] ) )
       $chk = "&group[6917][1024]=1024";
  else $chk = "";
  echo "<form method='get'" .
       "      id='frm'" .
       "      target='_blank'" .
       "      action='https://personaltrainer.us6.list-manage.com/subscribe/post-json?u=4aeb5b710adef51ab754ll02f&id=76420114ff&EMAIL=$email$chk'>" .
       "</form>" .
       "<script type='text/javascript'>" .
       "document.getElementById('frm').submit();" .
       "</script>";
  exit;
}
?>

编辑#4:

这是编辑 #2,但将 URL 保存在文本文件中:

<?php
if ( isset( $_GET["EMAIL"] ) ) {
  $email = $_REQUEST['EMAIL'];
  if ( isset( $_GET["group"] ) )
       $chk = "&group[6917][1024]=1024";
  else $chk = "";
  $url = "https://personaltrainer.us6.list-manage.com/subscribe/post-json?u=4aeb5b710adef51ab754ll02f&id=76420114ff&EMAIL=$email$chk"
  // SAVE EMAIL.
    $file = fopen("document.txt","a");
    fwrite($file,$email . "\n");
    fwrite($file,$url . "\n");
    fclose($file);
  header("Location: $url");
  exit;
}
?>

关于php - 如何在表单提交之前发布到 .txt 文档,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39597992/

相关文章:

php - MySQL 在表之间移动整列

java - 支持 XEP-133 的 XMPP 库(管理员命令)

javascript - HTML 必需属性不适用于 AJAX 提交

javascript - Mailchimp Facebook 共享 URL 未重定向到正确的 URL

php - 多个 MySQL 表到 json_encode

php - 如果在 url 中使用 https,动态网页内容不会出现

javascript - jQuery - 在 .load 调用完成之前禁用 HTML 页面

jquery - 如何使用 jquery 在 div 中添加带有值的文本框(就地编辑)

html-email - 在 HTML 电子邮件中包含 "Is this email not displaying correctly? View it in your browser."实际上仍然有任何帮助吗?

php - MailChimp API v3.0 事件计划错误