昨天我问a question我如何劫持我的MailChimp联系表格以发送额外的电子邮件(当满足某些条件时)。
我写了将action="...
从MailChimp网址更改为我自己的process_email.php
,其代码类似于以下内容:
extract($_POST);
$url = 'http://myMailchimpUser.us2.list-manage.com/subscribe/post';
$fields = array(
'u' => urlencode($u),
'id' => urlencode($id),
'group' => http_build_query ($group),
'MERGE1' => urlencode($MERGE1),
'MERGE2' => urlencode($MERGE2),
'MERGE3' => http_build_query($MERGE3),
'other_more_info_text' => urlencode($other_more_info_text),
'submit' => urlencode($submit)
);
foreach($fields as $key=>$value) { $fields_string .= $key.'='.$value.'&'; }
rtrim($fields_string, '&');
$ch = curl_init();
curl_setopt($ch,CURLOPT_URL, $url);
curl_setopt($ch,CURLOPT_POST, count($fields));
curl_setopt($ch,CURLOPT_POSTFIELDS, $fields_string);
$result = curl_exec($ch);
curl_close($ch);
我还没有添加将电子邮件发送给自己的代码,但这应该是微不足道的。我使用此代码时遇到的问题是,不是将我重定向到MailChimp页面,而是将其实际加载到process_email.php
内(并且其加载错误,无法启动。)
我知道如果我使用JavaScript,我可以完成我想要做的事情,但在我看来,这不是解决这个问题的正确方法。任何人都可以给我任何帮助吗?
答案 0 :(得分:1)
如果我理解正确:您希望首先在本地POST数据,然后将表单POST发送到Mailchimp。如果这是你想要做的,那么使用连接到表单(或表单按钮)的一些JS可能是最好的方法。我认为是适合你的情况。
像下面这样的jQuery会首先在本地POST表单,一旦该请求完成,它将使用给定的动作URL(mailchimp)提交表单。
$(document).ready(function(){
$('#submit-button').click(function(event){
event.preventDefault();
$.post("your_email_parser.php", $('#form-id').serialize(), function(){
$('#form-id').submit();
});
});
});
...
<form id='form-id' action='http://myMailchimpUser.us2.list-manage.com/subscribe/post' method='post'>
...
<input type='submit' id='submit-button' />
</form>