2

昨天我问了一个问题,关于如何劫持我的 MailChimp 联系表以发送额外的电子邮件(当满足某些条件时)。

我使用类似于以下的代码action="...将 MailChimp URL 更改为我自己的: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,我可以完成我想做的事情,但在我看来,这不是正确的方法。谁能给我任何帮助?

4

1 回答 1

1

如果我理解正确:您想先在本地发布数据,然后让表单发布到 Mailchimp。如果这就是你想要做的,那么使用一些连接到表单(或表单按钮)的 JS 可能是最好的方法。我认为这适合您的情况的正确方法。

像下面这样的 jQuery 将首先在本地发布表单,一旦该请求完成,它将使用给定的操作 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>
于 2012-08-30T03:14:30.190 回答