【发布时间】:2017-10-22 02:16:16
【问题描述】:
我正在尝试将订阅者自动更新到 Mailchimp 列表。我可以使用表单等中的字符串更新列表。但是,我正在处理的电子商务网站已经有一个电子邮件地址存储在我需要使用的会话中,但在使用 Curl 时它会丢失。有人可以帮忙吗?
下面的示例使用了我提供的表格以供参考。
<?php
session_start();
if(isset($_POST['submit'])){
$email = $_POST['email'];
if(!empty($email) && !filter_var($email, FILTER_VALIDATE_EMAIL) === false){
// MailChimp API credentials
$apiKey = 'xxx-us14';
$listID = 'xxxxxxxx';
// 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',
'double_optin' => false,
'send_welcome' => true,
'update_existing' => false,
'replace_interests' => false,
'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);
【问题讨论】:
-
我没有看到您在代码中使用
SESSION的任何地方? -
是的,我刚刚包含了一个使用表单的工作示例。
-
问题还是一样。您问题中的
SESSION电子邮件代码在哪里? -
我在午休时间使用了另一台计算机,所以我现在没有。会话包括名字、名字和电子邮件地址。 Mailchimp 需要的一切。
-
上面的代码使用了 $_POST['email'] 和一个提交表单。我需要帮助尝试使用存储在会话中的电子邮件,而不是让用户填写另一个表单。
标签: php curl mailchimp-api-v3.0