检查MailChimp中的字段是否为空

时间:2017-12-01 10:05:46

标签: php mailchimp mailchimp-api-v3.0

首先,我要稍微解释一下情况。我们有一个表单,用户可以使用每个信息会话的特定数据和位置订阅自己的信息会话。信息会话是二年级的学者信息会话。

信息会话有: - 一个名字 - 约会 - 位置

用户可以订阅最多3个信息会话。如果他订阅4,那么第四个可能会覆盖Mailchimp中的第一个。

我想到每个会话创建3个字段。所以:

   name_session1
   date_session1
   location_session1
   name_session2
   date_session2
   location_session2
   name_session3
   date_session3
   location_session3

我正在使用Mailchimp的API 3.0。将数据写入字段没有问题。但我不知道如何检查字段是否为空,而不是使用下一个字段(例如name_session2)。

    <?php
    session_start();
    if(isset($_POST['submit'])){
         $fname = $_POST['fname'];
         $lname = $_POST['lname'];
         $email = $_POST['email'];
         if(!empty($email) && !filter_var($email, FILTER_VALIDATE_EMAIL) === false){
               // MailChimp API credentials
               $apiKey = 'InsertMailChimpAPIKey';
               $listID = 'InsertMailChimpListID';

    // MailChimp API URL
    $memberID = md5(strtolower($email));
    $dataCenter = substr($apiKey,strpos($apiKey,'-')+1);
    $url = 'https://' . $dataCenter . '.api.mailchimp.com/3.0/lists/' . $listID . '/members/' . $memberID;

    // member information
    $json = json_encode([
        'email_address' => $email,
        'status'        => 'subscribed',
        'merge_fields'  => [
            'FNAME'     => $fname,
            'LNAME'     => $lname
        ]
    ]);

    // send a HTTP POST request with curl
    $ch = curl_init($url);
    curl_setopt($ch, CURLOPT_USERPWD, 'user:' . $apiKey);
    curl_setopt($ch, CURLOPT_HTTPHEADER, ['Content-Type: application/json']);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($ch, CURLOPT_TIMEOUT, 10);
    curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'PUT');
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
    curl_setopt($ch, CURLOPT_POSTFIELDS, $json);
    $result = curl_exec($ch);
    $httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
    curl_close($ch);

    // store the status message based on response code
    if ($httpCode == 200) {
        $_SESSION['msg'] = '<p style="color: #34A853">You have successfully subscribed to CodexWorld.</p>';
    } else {
        switch ($httpCode) {
            case 214:
                $msg = 'You are already subscribed.';
                break;
            default:
                $msg = 'Some problem occurred, please try again.';
                break;
        }
        $_SESSION['msg'] = '<p style="color: #EA4335">'.$msg.'</p>';
            }
        }else{
           $_SESSION['msg'] = '<p style="color: #EA4335">Please enter valid email address.</p>';
        }
    }
    // redirect to homepage
    header('location:index.php');

0 个答案:

没有答案