簡體   English   中英

Mailchimp在多個列表上誤報

[英]Mailchimp false positive on multiple list subscribe

這是我的代碼,我用來使用戶訂閱多個Mailchimp列表,他們在列表中進行選擇,並通過ajax請求發布到此文件中。 這是代碼:

因此由於某種原因,這會從Mailchimp返回成功,但實際上並沒有訂閱我輸入的列表。 我已經確認列表ID是正確的,字段也是如此。

(我刪除了所有對實際ID的引用)

<?php

    include 'MailChimp.php';

    $mailchimp = new MailChimp('MYAPI_KEY'); //I have my code in here

    $newsletter_keyarray = array(
        "List one" => "listoneid",
        "List two" => "listtwoid",
        "List three" => "listthreeid",
        "List four" => "listfourid"
    );

    $any_errors = false;

    foreach ($_POST['lists'] as $key => $list) {
        if(in_array($list, $newsletter_keyarray)){

            $merge_vars_array = array(
                'EMAIL' => $_POST['email']
            );

            if($list == "List one"){
                $merge_vars_array['MMERGE1'] = $_POST['fname'];
                $merge_vars_array['MMERGE2'] = $_POST['sname'];
                $merge_vars_array['MMERGE3'] = $_POST['org'];
            }else if($list == "List two"){
                $merge_vars_array['FNAME'] = $_POST['fname'];
                $merge_vars_array['LNAME'] = $_POST['sname'];
                $merge_vars_array['MMERGE4'] = $_POST['job'];
                $merge_vars_array['MMERGE5'] = $_POST['org'];
            }else if($list == "List three"){
                $merge_vars_array['FNAME'] = $_POST['fname'];
                $merge_vars_array['LNAME'] = $_POST['sname'];
                $merge_vars_array['MMERGE3'] = $_POST['org'];
                $merge_vars_array['MMERGE4'] = $_POST['job'];
            }else if($list == "List four"){
                $merge_vars_array['FNAME'] = $_POST['fname'];
                $merge_vars_array['LNAME'] = $_POST['sname'];
                $merge_vars_array['MMERGE4'] = $_POST['job'];
                $merge_vars_array['MMERGE5'] = $_POST['org'];
            }

            $mailResults = $mailchimp->call('lists/subscribe', array(
                'id' => $newsletter_keyarray[$list],        
                'email' => array('email' => $_POST['email']),
                'merge_vars' => $merge_vars_array,
                'double_optin' => false
            ));
            if(isset($mailResults['status']) && $mailResults['status'] == 'error'){
                $any_errors = true;
            }
        }
    }

    //enter api and userdetails here
    $response_array = array();

    if($any_errors){
        header('Content-type: application/json');
        $response_array['status'] = 'error';
        if(!filter_var($_POST['email'], FILTER_VALIDATE_EMAIL)){
            $response_array['message'] = 'The email you have entered is not valid';
        }else if(isset($mailResults['error']) && $mailResults['error'] != ""){
            $response_array['message'] = $mailResults['error'];
        }
        echo json_encode($response_array);
    }else{
        header('Content-type: application/json');
        $response_array['status'] = 'success';
        echo json_encode($response_array);
    }

?>

我覺得這有點愚蠢。

問題是in_array ,它比較值而不是鍵。 所以最后我使用了array_key_exists

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM