Loading... # 一.SDK类 ```php <?php //云解析服务精简版SDK class AliyunSimple { private $AccessKeyId; private $AccessKeySecret; private $Endpoint = 'alidns.aliyuncs.com'; //API接入域名 private $Version = '2015-01-09'; //API版本号 function __construct($AccessKeyId, $AccessKeySecret){ $this->AccessKeyId = $AccessKeyId; $this->AccessKeySecret = $AccessKeySecret; } //获取子域名解析记录列表 public function DescribeSubDomainRecords($SubDomain){ $param = ['Action' => __FUNCTION__, 'SubDomain' => $SubDomain]; return $this->request($param, true); } //添加解析记录 public function AddDomainRecord($DomainName, $RR, $Type, $Value, $Line = 'default', $TTL = 600){ $param = ['Action' => __FUNCTION__, 'DomainName' => $DomainName, 'RR' => $RR, 'Type' => $Type, 'Value' => $Value, 'Line' => $Line, 'TTL' => $TTL]; return $this->request($param); } //修改解析记录 public function UpdateDomainRecord($RecordId, $RR, $Type, $Value, $Line = 'default', $TTL = 600){ $param = ['Action' => __FUNCTION__, 'RecordId' => $RecordId, 'RR' => $RR, 'Type' => $Type, 'Value' => $Value, 'Line' => $Line, 'TTL' => $TTL]; return $this->request($param); } //删除解析记录 public function DeleteDomainRecord($RecordId){ $param = ['Action' => __FUNCTION__, 'RecordId' => $RecordId]; return $this->request($param); } //设置解析记录状态 public function SetDomainRecordStatus($RecordId, $Status){ $param = ['Action' => __FUNCTION__, 'RecordId' => $RecordId, 'Status' => $Status]; return $this->request($param); } //签名方法 private function aliyunSignature($parameters, $accessKeySecret, $method) { ksort($parameters); $canonicalizedQueryString = ''; foreach ($parameters as $key => $value) { $canonicalizedQueryString .= '&' . $this->percentEncode($key). '=' . $this->percentEncode($value); } $stringToSign = $method . '&%2F&' . $this->percentencode(substr($canonicalizedQueryString, 1)); $signature = base64_encode(hash_hmac("sha1", $stringToSign, $accessKeySecret."&", true)); return $signature; } private function percentEncode($str) { $res = urlencode($str); $res = preg_replace('/\+/', '%20', $res); $res = preg_replace('/\*/', '%2A', $res); $res = preg_replace('/%7E/', '~', $res); return $res; } //请求方法(当需要返回列表等数据时,returnData=true) private function request($param, $returnData=false){ if(empty($this->AccessKeyId)||empty($this->AccessKeySecret))return false; $url='https://'.$this->Endpoint.'/'; $data=array( 'Format' => 'JSON', 'Version' => $this->Version, 'AccessKeyId' => $this->AccessKeyId, 'SignatureMethod' => 'HMAC-SHA1', 'Timestamp' => gmdate('Y-m-d\TH:i:s\Z'), 'SignatureVersion' => '1.0', 'SignatureNonce' => $this->random(8)); $data=array_merge($data, $param); $data['Signature'] = $this->aliyunSignature($data, $this->AccessKeySecret, 'POST'); $ch=curl_init($url); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_TIMEOUT, 30); curl_setopt($ch, CURLOPT_POST, 1); curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($data)); $json=curl_exec($ch); $httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE); curl_close($ch); $arr=json_decode($json,true); if($returnData==true){ return $arr; }else{ if($httpCode==200){ return true; }else{ return $arr['Message']; } } } private function random($length, $numeric = 0) { $seed = base_convert(md5(microtime().$_SERVER['DOCUMENT_ROOT']), 16, $numeric ? 10 : 35); $seed = $numeric ? (str_replace('0', '', $seed).'012340567890') : ($seed.'zZ'.strtoupper($seed)); $hash = ''; $max = strlen($seed) - 1; for($i = 0; $i < $length; $i++) { $hash .= $seed[mt_rand(0, $max)]; } return $hash; } } ``` # 二.调用方式 ```php $aliyun = new AliyunSimple('阿里云AccessKeyId','阿里云AccessKeySecret'); //获取子域名解析记录列表。这种方法可以自己在类里面增加 $result = $aliyun->DescribeSubDomainRecords($SubDomain); var_dump($result); ``` 最后修改:2023 年 03 月 11 日 © 允许规范转载 打赏 赞赏作者 支付宝微信 赞 如果觉得我的文章对你有用,请随意赞赏