在Backend PHP Developer课程开始之前,准备了本文的翻译。
对于使用PHP 7.0或更高版本的开发人员,Cloudflare提供了PHP API绑定程序。它支持Cloudflare API的最新第四版。您可以将此SDK用于多种用途,包括:- 管理和自动化对Cloudflare中DNS条目的更改。
- 以编程方式将区域添加到您的帐户。
- 版本控制和管理页面规则中的更改
- 使用区域锁定和UserAgent规则自动阻止IP地址和用户代理。
- 获取Cloudflare IP范围以使用防火墙自动进行白名单
支持的功能
本文提供了一些使用Cloudflare PHP Binding API的常见示例。当前,我们支持以下端点和身份验证方法:V4端点- 域名解析
- 知识产权
- 页面规则
- 用户代理规则
- 用户管理(部分)
- 区域锁定
- 区域
认证方式安装
Cloudflare PHP API绑定可在Packagist上的cloudflare / sdk中获得,可通过调用composer require cloudflare / sdk使用Composer进行安装:
此外,如果您想直接阅读源代码或为项目做贡献,则可以在以下位置找到源代码GitHub在cloudflare / cloudflare-php存储库中。开始工作
这是使用API的一个小例子<?php
require_once('vendor/autoload.php');
$key = new \Cloudflare\API\Auth\APIKey('mjsa@junade.com', 'API KEY GOES HERE');
$adapter = new Cloudflare\API\Adapter\Guzzle($key);
$user = new \Cloudflare\API\Endpoints\User($adapter);
echo 'Your user ID is: ' . $user->getUserID() . PHP_EOL;
通过在命令行上运行此简单脚本,我们得到以下输出:
上市区
以下是使用以下代码列出帐户中所有区域的方法:<?php
require_once('vendor/autoload.php');
$key = new \Cloudflare\API\Auth\APIKey('mjsa@junade.com', 'API KEY GOES HERE');
$adapter = new Cloudflare\API\Adapter\Guzzle($key);
$zones = new \Cloudflare\API\Endpoints\Zones($adapter);
foreach ($zones->listZones()->result as $zone) {
echo $zone->name.' ('.$zone->plan->name.')'.PHP_EOL;
}
通过命令行运行此脚本将给出以下输出:
清除所有网站上的缓存
这是另一个使用“清除缓存”端点完全清除帐户每个网站上的缓存的示例(请注意,您可以使用cachePurge方法而不是cachePurgeEverything来清除使用缓存的单个文件):<?php
require_once('vendor/autoload.php');
$key = new \Cloudflare\API\Auth\APIKey('mjsa@junade.com', 'API KEY GOES HERE');
$adapter = new Cloudflare\API\Adapter\Guzzle($key);
$zones = new \Cloudflare\API\Endpoints\Zones($adapter);
foreach ($zones->listZones()->result as $zone) {
echo "Cache purge for " . $zone->name . ": ";
echo $zones->cachePurgeEverything($zone->id) == true ? "successful" : "failed";
echo PHP_EOL;
}
由于在命令行上运行此脚本,因此您将看到以下输出:
创建页面规则
该SDK还可用于以编程方式将页面规则添加到Cloudflare区域。这是添加缓存绕过规则的简单示例:<?php
require_once('vendor/autoload.php');
$key = new \Cloudflare\API\Auth\APIKey('mjsa@junade.com', 'API KEY GOES HERE');
$adapter = new Cloudflare\API\Adapter\Guzzle($key);
$zones = new \Cloudflare\API\Endpoints\Zones($adapter);
$zoneID = $zones->getZoneID("junade.com");
$pageRulesTarget = new \Cloudflare\API\Configurations\PageRulesTargets('https://junade.com/noCache/*');
$pageRulesConfig = new \Cloudflare\API\Configurations\PageRulesActions();
$pageRulesConfig->setCacheLevel('bypass');
$pageRules = new \Cloudflare\API\Endpoints\PageRules($adapter);
$pageRules->createPageRule($zoneID, $pageRulesTarget, $pageRulesConfig, true, 6);
我们可以使用Zones终结点类的getZoneID方法轻松获得所需区域的ID-此帮助程序方法通过区域名称返回ID。请注意,SDK使用依赖项注入来指定页面规则的目的和配置。这就是为什么我们需要将PageRulesTargets和PageRuleActions类的实例传递给createPageRule方法。域名解析
该SDK还可用于以编程方式添加记录。这是添加DNS记录的示例:<?php
require_once('vendor/autoload.php');
$key = new \Cloudflare\API\Auth\APIKey('mjsa@junade.com', 'API KEY GOES HERE');
$adapter = new Cloudflare\API\Adapter\Guzzle($key);
$zones = new \Cloudflare\API\Endpoints\Zones($adapter);
$zoneID = $zones->getZoneID("junade.com");
$dns = new \Cloudflare\API\Endpoints\DNS($adapter);
if ($dns->addRecord($zoneID, "A", 'example', '8.8.8.8', 0, true) === true) {
echo "DNS record created.". PHP_EOL;
}
此外,我们还可以使用此SDK删除,列出和查看DNS记录的详细信息。例如,让我们创建一个简单的脚本来列出我们区域中每个DNS记录的类型和名称:<?php
require_once('vendor/autoload.php');
$key = new \Cloudflare\API\Auth\APIKey('mjsa@junade.com', 'API KEY GOES HERE');
$adapter = new Cloudflare\API\Adapter\Guzzle($key);
$zones = new \Cloudflare\API\Endpoints\Zones($adapter);
$zoneID = $zones->getZoneID("icyapril.com");
$dns = new \Cloudflare\API\Endpoints\DNS($adapter);
foreach ($dns->listRecords($zoneID)->result as $record) {
echo $record->type." ".$record->name.PHP_EOL;
}
当我为我的区域之一运行此脚本时,将是输出:
了解有关该课程的更多信息