2

昨日、MailChimpの連絡フォームを乗っ取って、追加の電子メールを送信する方法について質問しました(特定の条件が満たされた場合)。

私は次のようなコードでaction="...MailChimpURLから自分のものに変更を書きました: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

私の理解が正しければ、最初にデータをローカルに POST してから、フォームを Mailchimp に POST させます。それがあなたがやろうとしていることである場合、フォーム (またはフォーム ボタン) に接続された 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>
于 2012-08-30T03:14:30.190 に答える