2017-01-18 2 views
0

Я попытался найти ответ в течение последних 5 часов, но я, наконец, обрушился и обратился за помощью.Параметры группы MailChimp в php

В принципе, этот код работал отлично, пока мне не нужно было выбрать вариант группы. Я не уверен, что правильно создаю свой массив интересов, мне, возможно, придется использовать «merge_vars», но мне действительно нужно какое-то руководство, прежде чем я проведу еще 5 часов, слепо идущих в стены.

Примечание для моего имени группы я использую всю строку "группы [3117]"

action.php

<?php 
session_start(); 
if(isset($_POST['submit'])){ 
$fname = $_POST['fname']; 
$lname = $_POST['lname']; 
$email = $_POST['email']; 
$interest = $_POST['group[3117]']; 

if(!empty($email) && !filter_var($email, FILTER_VALIDATE_EMAIL) === false){ 
    // MailChimp API credentials 
    $apiKey = '+ insert api key here +'; 
    $listID = 'insert list id'; 
    $interest = 'insert group name'; // YOUR INTEREST/GROUP ID 

    // 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 
     ], 
      'interests'  => array(
     $interest => true 
     ), 
    ]); 

    // 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'); 

Index.php

<?php session_start(); // place it on the top of the script ?> 
<?php 
$statusMsg = !empty($_SESSION['msg'])?$_SESSION['msg']:''; 
unset($_SESSION['msg']); 
echo $statusMsg; 
?> 
<form method="post" action="action.php"> 
<p><label>First Name: </label><input type="text" name="fname" /></p> 
<p><label>Last Name: </label><input type="text" name="lname" /></p> 
<p><label>Email: </label><input type="text" name="email" /></p> 
<p><select name="group[3117]" class="REQ_CSS" id="mce-group[3117]"> 
<option value=""></option> 
<option value="1">Los Angeles</option> 
<option value="2">Seattle</option> 
<option value="4">Portland</option> </p> 
<p><input type="submit" name="submit" value="SUBSCRIBE"/></p> 
</form> 
+0

Что произойдет, если вы назовете ваш элемент «group» вместо «group [3117]»? – miken32

+0

Также вы не закрываете элемент '