您好我想保存简单html FORM的数据以保持联系。我似乎无法找到有关如何完成此操作的任何信息。有没有人之前使用过他们的API,如果有的话,你能说明如何处理论坛并使用Constant Contact API保存数据
<form id="form" action="form.php">
First: <input name="first" id="first" />
Last: <input name="last" id="last" />
Address: <input name="address" id="address" />
FirstTime: <input type="checkbox" />
</form>
答案 0 :(得分:1)
Constant Contact
一般不允许非常简单的表单。也就是说,他们提供Signup Form Generator
这不需要您编写代码,只需访问您尝试添加代码的网页/服务器即可。表单生成器可能是您最好和最快的选项,但如果您想要使用该路径,还可以使用API
- General API Documnetation来帮助您入门(请参阅主页中的“代码示例”链接) )。
我希望有所帮助!
CTCT API支持
答案 1 :(得分:0)
这个简单的PHP示例应为您提供帮助。您必须先signup for a Developer Account,然后(通过电子邮件)确认注册链接后,才能登录并转到Developer Portal中的“应用程序和API密钥”标签,以创建一个新的应用程序,然后为您提供所需的钥匙。至于获取列表ID,请在开发人员门户中单击“ API测试器”选项卡,键入您的访问令牌,不要单击“获取访问令牌”,然后向下滚动并查找“检索ContactLists的集合”。单击该链接,然后单击“试用”按钮。它将返回您已设置的每个列表及其数字ID。
请注意,我下面还有一个“ ssl”数组块。在我的案例中,我发现它可以使用该块,也可以不使用该块,但是仍然通过HTTPS运行事务。
有关用于添加联系人的JSON块的更多信息,该块具有用于添加联系人的更多选项,您可以read about it on the online docs。需要注意的一个重要的额外JSON属性变量是confirmed
属性。
但是有一个陷阱。如果该联系人之前已添加到 给定帐户,那么您将收到“ HTTP 409冲突”错误。的 但是,解决方法不是很容易。步骤将是:
- 更改下面的代码,以便将
'ignore_errors' => TRUE
添加到http数组中。- 如果响应中包含
already exists
,则表示该电子邮件已经在该帐户中,因此您无法将其添加到该帐户中 没有该解决方法的列表。所以请继续阅读...。- 抓住那个条件。
- 使用HTTP GET on the /contacts API通过给定的电子邮件地址获取联系人ID, 通过
?email=$sEmail&status=ALL&limit=1&api_key=$sAPIKey
。- 使用HTTP GET on the /contacts/{contactId} API通过给定的联系人ID获取联系人JSON对象 并使用
json_decode()
将其转换为PHP中的对象。- 修改Contact JSON对象,以便您使用
$oJSON->lists[] = (object) array('id'=>'' . $sListID);
附加新的列表ID- 现在使用添加的新列表保存单个联系人。为此,请将Contact JSON对象转换为JSON字符串并更新联系人 使用HTTP PUT ON the /contacts/{contactId} API。 即使您不小心多次调用了此步骤, ConstantContact v2 API非常聪明,知道不添加人员 多次出现在列表中,不会出错。
<?php
error_reporting(E_ALL);
ini_set('display_errors','On');
header('Content-Type: text/plain');
// REPLACE WITH YOUR OWN
$sAPIKey = '689bnyc8td8dasxeau5bghb';
$sToken = '55de771a-dfee-453b-a654-1e62a5856231';
$sListID = 1000394510;
// END REPLACE BLOCK
// THE USER YOU WANT TO ADD, ONLY USING NAME AND EMAIL
$sEmail = 'username' . rand(1111,9999) . '@example.com';
$sFirst = 'Test';
$sLast = 'Tester';
$sURL = "https://api.constantcontact.com/v2/contacts?action_by=" .
"ACTION_BY_OWNER&api_key=$sAPIKey";
$sJSON = <<<EOD
{
"lists": [
{
"id": "$sListID"
}
],
"email_addresses": [
{
"email_address": "$sEmail"
}
],
"first_name": "$sFirst",
"last_name": "$sLast"
}
EOD;
$sResponse = file_get_contents($sURL,false,stream_context_create(array(
'http'=>array(
'method' => 'POST',
'header' => "Authorization: Bearer $sToken\nContent-Type: application/json",
'content' => $sJSON
),
'ssl'=>array(
'verify_peer'=>false,
'verify_peer_name'=>false,
'allow_self_signed'=>true,
)
)));
echo $sResponse;
答案 2 :(得分:0)
仅是跟进Volomike的回答,这应该得到大家的认可,因此可以赞扬他的回答,这是我扩展的代码,其中涵盖了冲突错误。这是一种程序方法。随时写一个更好的。
请紧记,我不得不在最后一刻紧急解决某些问题。我不知道我在这里输入的内容可能是不必要的,或者可能写得更好。我只需要快速将其捣碎即可使用。如果有更完整,更清洁的方法,请随时将其作为答案并对此答案发表评论,以便我加您。
“ //用自己的替换”部分-有关整个开发人员帐户过程的信息,请参见Volomike的答案。这是非常快的,所以不要让它灰心。只需注册,获取令牌和密钥,然后将其插入。
error_reporting(E_ALL);
ini_set('display_errors','On');
header('Content-Type: text/plain');
// REPLACE WITH YOUR OWN
$sAPIKey = 'your-api-key';
$sToken = 'your-token';
$sListID = 11111111; //your list id
$email = 'email-to-be-added@gmail.com';
// END REPLACE BLOCK
$sURL = "https://api.constantcontact.com/v2/contacts?action_by=" .
"ACTION_BY_OWNER&api_key=$sAPIKey";
//DONT INDENT THIS. remember heredoc needs it to be rammed right up against the wall
$sJSON = <<<EOD
{
"lists": [
{
"id": "$sListID"
}
],
"email_addresses": [
{
"email_address": "$email"
}
]
}
EOD;
$sResponse = file_get_contents($sURL,false,stream_context_create(array(
'http'=>array(
'method' => 'POST',
'header' => "Authorization: Bearer $sToken\nContent-Type: application/json",
'content' => $sJSON,
'ignore_errors' => TRUE
),
'ssl'=>array(
'verify_peer'=>false,
'verify_peer_name'=>false,
'allow_self_signed'=>true,
)
)));
if(strpos($sResponse, 'http.status.email_address.conflict') > -1)
{
$sResponse = file_get_contents("https://api.constantcontact.com/v2/contacts?email=$email&status=ALL&limit=1&api_key=$sAPIKey",false,stream_context_create(array(
'http'=>array(
'header' => "Authorization: Bearer $sToken",
'ignore_errors' => TRUE
),
'ssl'=>array(
'verify_peer'=>false,
'verify_peer_name'=>false,
'allow_self_signed'=>true,
)
)));
$res = json_decode($sResponse);
$id = $res->results[0]->id;
$res->results[0]->lists[] = (object) array('id' => ''.$sListID);
$sResponse = file_get_contents("https://api.constantcontact.com/v2/contacts/$id?action_by=ACTION_BY_OWNER&api_key=$sAPIKey",false,stream_context_create(array(
'http'=>array(
'method' => 'PUT',
'header' => "Authorization: Bearer $sToken\nContent-Type: application/json",
'content' => json_encode($res->results[0]),
'ignore_errors' => TRUE
),
'ssl'=>array(
'verify_peer'=>false,
'verify_peer_name'=>false,
'allow_self_signed'=>true,
)
)));
echo $sResponse;
}
else
{
// didnt have a conflict
echo $sResponse;
}
//there was a problem of some kind if it reaches here
答案 3 :(得分:0)
对于不幸使用 Constant Contact 进行简单电子邮件注册表单的可怜人,请节省自己的工作时间,只需这样做:
在 Constant Contact 仪表板中创建内联表单并将该表单添加到您的页面。
使用 CSS 尽可能快地隐藏那个傻瓜(display: none;
可以)。
创建您自己的漂亮表单(包括验证)并执行如下操作:
$("form.beautimus-maximus").on("submit", function(event) {
event.preventDefault();
var email = $(this).find("input").val();
$(".ctct-inline-form input").val(email);
$(".ctct-inline-form form").submit();
});
为自己的所作所为羞愧地低下头。
享受您节省的所有时间。