PHP阿里云云解析签名, 通过API 绑定域名到动态 ip
<?php
date_default_timezone_set("GMT"); //绑定 ip 到域名
Ali::Obj()->UpdateDomainRecord(); class Ali
{
private $accessKeyId = "OJR9w5xfGaz1jVDg";
private $accessSecrec = "xOKRdKk0EI7F0hdtnEnIAVLVxAe4LI";
private static $obj = null;
public static function Obj ()
{
if(is_null(self::$obj))
{
self::$obj = new self();
}
return self::$obj;
} public function DescribeDomainRecords()
{
$requestParams = array(
"Action" => "DescribeDomainRecords",
"DomainName" => "hankangkang.com"
);
$val = $this->requestAli($requestParams);
$this->outPut($val);
} /**
* 更新 ip
*/
public function UpdateDomainRecord()
{
$ip = $this->ip();
$requestParams = array(
"Action" => "UpdateDomainRecord",
"RecordId" => "",
"RR" => "@",
"Type" => "A",
"Value" => $ip,
);
$val = $this->requestAli($requestParams);
$this->outPut($val." ".$ip);
} private function requestAli($requestParams)
{
$publicParams = array(
"Format" => "JSON",
"Version" => "2015-01-09",
"AccessKeyId" => $this->accessKeyId,
"Timestamp" => date("Y-m-d\TH:i:s\Z"),
"SignatureMethod" => "HMAC-SHA1",
"SignatureVersion" => "1.0",
"SignatureNonce" => substr(md5(rand(,)),rand(,),),
); $params = array_merge($publicParams, $requestParams);
$params['Signature'] = $this->sign($params, $this->accessSecrec);
$uri = http_build_query($params);
$url = 'http://alidns.aliyuncs.com/?'.$uri;
return $this->curl($url);
} private function ip()
{
$ip = $this->curl("http://httpbin.org/ip");
$ip = json_decode($ip,true);
return $ip['origin'];
} private function sign($params, $accessSecrec, $method="GET")
{
ksort($params);
$stringToSign = strtoupper($method).'&'.$this->percentEncode('/').'&'; $tmp = "";
foreach($params as $key=>$val){
$tmp .= '&'.$this->percentEncode($key).'='.$this->percentEncode($val);
}
$tmp = trim($tmp, '&');
$stringToSign = $stringToSign.$this->percentEncode($tmp); $key = $accessSecrec.'&';
$hmac = hash_hmac("sha1", $stringToSign, $key, true); return base64_encode($hmac);
} private function percentEncode($value=null)
{
$en = urlencode($value);
$en = str_replace("+", "%20", $en);
$en = str_replace("*", "%2A", $en);
$en = str_replace("%7E", "~", $en);
return $en;
} private function curl($url)
{
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL,$url );
curl_setopt($ch, CURLOPT_RETURNTRANSFER, );
$result=curl_exec ($ch);
return $result;
} private function outPut($msg)
{
echo date("Y-m-d H:i:s")." ".$msg.PHP_EOL;
}
}
PHP阿里云云解析签名, 通过API 绑定域名到动态 ip的更多相关文章
- 私有云方案——利用阿里云云解析实现DDNS
各位都是程序员,工作中是不是遇到个类似情况.在家里研究的一些开源代码或写的一些demo或试验代码,在工作中正好需要参考一下,但是在家里的电脑上. 虽然这些都可以用云 ...
- 解析高德地图api获取省市区,生成最新三级联动sql表
前言: 最近项目中用到了全国省市区三级信息,但是网上找到的信息都是比较旧的信息.与现在最新的地区信息匹配不上.后来想到高德地图上可能有这些信息.所以解析了一下api接口,生成了相关省市区的sql信息. ...
- Cookie-Parser是怎样解析签名后的cookie的(同一时候对cookie和cookie-signature进行说明)
第一步:我们来学习一下cookie-signature: var cookie=require('./index'); var val = cookie.sign('hello', 'tobiisco ...
- 阿里云OSS 图片处理api(custom)
阿里云OSS 图片处理api(custom) 阿里云对象存储服务(Object Storage Service, 简称OSS) 学习了:https://blog.csdn.net/u014559227 ...
- 阿里云人脸比对API封装
这是根据封装是根据阿里云官方给的Demo进行修改的,当时是因为编写微信小程序云函数需要使用到阿里云人脸比对接口,才对其进行封装的. 记录下来,方便下次使用. 复制下来可以直接使用. 用到的依赖如下: ...
- 域名动态解析到动态IP
一般宽带用户的IP都是动态IP,重连之后IP可能会发生变化. 如果想在其他地方连接家里的设备,或者在家中搭建服务器,就会受到影响. 现在提供一种动态解析域名的方式,只要检测到IP的变化,那么就调用阿里 ...
- 动态IP解析
本文介绍两种方便获取主机动态IP的方式(DDNS,IP报告网页),并给出相应的代码实现. shell脚本获取本机IP,执行上传操作和更新DNS操作.定期执行通过crontab或者systemd等服务. ...
- ArcGIS API for Silverlight动态标绘的实现
原文:ArcGIS API for Silverlight动态标绘的实现 1.下载2个dll文件,分别是: ArcGISPlotSilverlightAPI.dll 和 Matrix.dll 其下载地 ...
- [CSAPP-II] 链接[符号解析和重定位] 静态链接 动态链接 动态链接接口
1 平台 转http://blog.csdn.net/misskissc/article/details/43063419 1.1 硬件 Table 1. 硬件(lscpu) Architecture ...
随机推荐
- django博客项目-设置django为中文语言
找到项目级别里面的setting文件,修改如下配置 """ LANGUAGE_CODE = 'zh-hans' TIME_ZONE = 'Asia/Shanghai' & ...
- Fiddler-http检测调试工具
Fiddler是最强大最好用的Web调试工具之一,它能记录所有客户端和服务器的http和https请求,允许你监视,设置断点,甚至修改输入输出数据. 使用Fiddler无论对开发还是测试来说,都有很大 ...
- Vim2.1-Vim简明教程【CoolShell】【非原创】
vim的学习曲线相当的大(参看各种文本编辑器的学习曲线),所以,如果你一开始看到的是一大堆VIM的命令分类,你一定会对这个编辑器失去兴趣的.下面的文章翻译自<Learn Vim Progress ...
- 【css】文本超出行数以省略号显示
//超出2行省略overflow:hidden;text-overflow:ellipsis;display:-webkit-box;-webkit-box-orient:vertical;-webk ...
- sql语句之随机查询记录和批量插入--基于mysql
本周遇到了好几次数据库方面的问题,一个是上一篇文章提到的因为要修改数据结构引起的在表间复制字段的需求,另一个就是这篇文章要写的:1,从某个数据表中按照某个字段不重复的随机选取几百条记录:2,然后把这些 ...
- # 2017-2018-2 20155319『网络对抗技术』Exp4:恶意代码分析
2017-2018-2 20155319『网络对抗技术』Exp4:恶意代码分析 实验目标与基础问题 ++1.实践目标++ 监控你自己系统的运行状态,看有没有可疑的程序在运行. 分析一个恶意软件,就分析 ...
- linux下使用软连接之案例二
在笔者的上一篇文章介绍过怎么通过linux的软连接在不修改上传代码的情况下,将上传到项目路径下的图片改为上传到项目外面,防止重新部署后图片被删除了.同时还可以直接通过类似访问静态资源的方 ...
- Android开发——监听Android手机的网络状态
0. 前言 在Android开发中监听手机的网络状态是一个常见的功能,比如在没网的状态下进行提醒并引导用户打开网络设置,或者在非wifi状态下开启无图模式等等.因此本篇将网上的资料进行了整理总结,方便 ...
- [C/C++标准库]_[初级]_[转换UTC时间到local本地时间]
场景 1.如果有面向全球用户的网站, 一般在存储时间数据时存储的是UTC格式的时间, 这样时间是统一的, 并可以根据当地时区来进行准确的转换. 2.存储本地时间的问题就在于如果换了时区, 那么显示的时 ...
- ssh无法登录,提示Connection closing...Socket close.
一.问题无法ssh直接连接到服务器 [C:\~]$ ssh 192.168.7.77 Connecting to ... Connection established. To escape to lo ...