1、children()
<div class="div">
<ul class="level-3">
<li class="item-1">1</li>
<li class="item-2">2</li>
<li class="item-3">3</li>
</ul>
</div>
$('.div >ul:last').css('border', '3px solid red') class为div的最后一个子级ul加红色
$('.div ul').children(':last').css('border', '3px solid blue') class为div下的ul下的最后一个子级li
$('.div ul li:last').css('border', '3px solid red') class为div下的ul下的最后一个子级li
$('.div >ul:last').children(':last').css('border', '3px solid red') class为div下的最后一个ul下的最后一个子级li
2、find()
1.children只查找第一级的子节点
2.find查找范围包括子节点的所有后代节点
3.find()相当于空格
4.children相当于>
3、parent()
$('.item-a:last').parent().css('border', '1px solid blue')
$('.item-a').parent(':last').css('border', '1px solid blue')
4、next()
$('.item-2:first').next().css('border', '1px solid blue') 找到第一个class为item-2的节点的下一个
$('.item-2').next(':first').css('border', '1px solid blue') 找到所有的class为item-2节点的下一个,然后找出其中的第一个
5、prev()
$('.item-3:last').prev().css('border', '1px solid red')
$('.item-3').prev(':last').css('border', '1px solid blue')
6、siblings() 所选节点的所有同级节点
$('.item-2').siblings(':last').css('border', '2px solid blue')
7、each()
//遍历所有的li
//修改偶数li内的字体颜色
$("li").each(function(index, element) {
if (index % 2) {
$(this).css('color','blue')
}
})
$("li").each(function(index, element) {
index 索引 0,1
element是对应的li节点 li,li
this 指向的是li
})
jQuery遍历
php 插件
1、validate $(form).validate({options})
其中form参数表示表单元素名称,options参数表示调用方法时的配置对象,所有的验证规则和异常信息显示的位置都在该对象中进行设置。
<script type="text/javascript" src="http://www.imooc.com/data/jquery.validate.js"></script>
<script type="text/javascript" src="http://www.imooc.com/data/jquery.validate.messages_cn.js"></script>
<script type="text/javascript">
$(function () {
$("#frmV").validate(
{
/*自定义验证规则*/
rules: {
email:{
required:true,
email:true
}
},
/*错误提示位置*/
errorPlacement: function (error, element) {
error.appendTo(".tip");
}
});
});
</script>
2、ajaxForm $(form). ajaxForm ({options})
其中form参数表示表单元素名称;options是一个配置对象,用于在发送ajax请求过程,设置发送时的数据和参数
<script type="text/javascript" src="http://www.imooc.com/data/jquery.form.js"></script>
<script type="text/javascript">
$(function () {
var options = {
url: "http://www.imooc.com/data/form_f.php",
target: ".tip"
}
$("#frmV").ajaxForm(options);
});
</script>
3、lightBox $(linkimage).lightBox({options})
<script type="text/javascript" src="http://www.imooc.com/data/jquery.notesforlightbox.js"></script>
<div id="divtest">
<div class="title">
<span class="fl">我的相册</span>
</div>
<div class="content">
<div class="divPics">
<ul>
<li><a href="http://img.mukewang.com/52e489f20001ecfc04480275.jpg" title="第1篇风景图片">
<img src="http://img.mukewang.com/52e489f20001ecfc04480275.jpg" alt="" />
</a></li>
<li><a href="http://img.mukewang.com/52e48a1e0001eec804480275.jpg" title="第2篇风景图片">
<img src="http://img.mukewang.com/52e48a1e0001eec804480275.jpg" alt="" />
</a></li>
<li><a href="http://img.mukewang.com/52e48a4c00015ad204480275.jpg" title="第3篇风景图片">
<img src="http://img.mukewang.com/52e48a4c00015ad204480275.jpg" alt="" />
</a></li>
</ul>
</div>
</div>
</div>
<script type="text/javascript">
$(function () {
$('ul a').lightBox({
overlayBgColor: "#666", //图片浏览时的背景色
overlayOpacity: 0.5, //背景色的透明度
containerResizeSpeed: 600 //图片切换时的速度
})
});
</script>
4、jqzoom $(linkimage).jqzoom({options})
其中linkimage参数为包含图片的<a>元素名称,options为插件方法的配置对象。
<script type="text/javascript" src="http://www.imooc.com/data/jquery.jqzoom.js"></script>
<div id="divtest">
<div class="title">
<span class="fl">图片放大镜</span>
</div>
<div class="content">
<a href="http://img.mukewang.com/52e4aec90001924d06800599.jpg" id="jqzoom" title="小兔子乖乖">
<img src="http://img.mukewang.com/52e4aee700012df702130212.jpg" alt=""/>
</a>
</div>
</div>
<script type="text/javascript">
$(function () {
$('.content a').jqzoom({ //绑定图片放大插件jqzoom
zoomWidth: 200, //小图片所选区域的宽
zoomHeight: 200, //小图片所选区域的高
zoomType: 'reverse' //设置放大镜的类型
});
});
</script>
juqery之选择器
1、 层级选择器
1. $('div>p') 选择所有div元素里面的子元素p $("div").chindren("p")
> 直接子元素,隔层不成立
2. $('div p')选择所有div元素里面的p元素 $("div").find("p")
3. $(".prev+div").prev后的第一个节点 $('.prev').next('div')
4. $(".prev~div").prev后面的所有div兄弟(兄弟!)节点,隔层不算 $('.prev').nextAll('div')
2、基本筛选选择器
$(".div:first") class属性为div的第一个元素
$(".div:last") class属性为div的最后一个元素
$(".div:even") class属性为div的下标为偶数元素
$(".div:odd") class属性为div的下标为奇数元素
$(".aaron:eq(2)") class属性为aaron的下标为2的元素
$(".aaron:gt(3)") class属性为aaron的下标大于3的元素
$(".aaron:lt(2)") class属性为aaron的下标小于2的元素
3、可见性筛选选择器
<p id="div1" style="display:none;">display</p> 隐藏
<p id="div2" style="width:0;height:0">width/height</p> 隐藏
<p id="div3" style="visibility:hidden;opacity:0">visibility</p> 显示
$('#div1:visible')
$('#div1:hidden')
4、属性筛选选择器
//查找所有div中,属性name=p1的div元素
$('div[name=p1]')
//查找所有div中,有属性p2的div元素
$('div[p2]')
//查找所有div中,有属性name中的值只包含一个连字符“-”的div元素
$('div[name|="-"]')
//查找所有div中,有属性name中的值包含一个连字符“空”和“a”的div元素
$('div[name~="a"]')
//查找所有div中,属性name的值是用imooc开头的
$('div[name^=imooc]')
//查找所有div中,属性name的值是用imooc结尾的
$('div[name$=imooc]')
//查找所有div中,有属性name中的值包含一个test字符串的div元素
$('div[name*="test"]')
//查找所有div中,有属性testattr中的值没有包含"true"的div
$('div[testattr!="true"]')
5、表单元素选择器
$(':password') == $('[type=password]')
$('input:text') == $('input[type="text"]') == $('input[type=text]')
6、表单对象属性筛选选择器
//查找所有input所有可用的(未被禁用的元素)input元素。
$('input:enabled')
//查找所有input所有不可用的(被禁用的元素)input元素。
$('input:disabled')
//查找所有input所有勾选的元素(单选框,复选框)
//移除input的checked属性
$('input:checked').removeAttr('checked')
//查找所有option元素中,有selected属性被选中的选项
//移除option的selected属性
$('option:selected').removeAttr('selected')
7、特殊选择器this
this,表示当前的上下文对象是一个html对象,可以调用html对象所拥有的属性和方法。
$(this),代表的上下文对象是一个jquery的上下文对象,可以调用jQuery的方法和属性值。
p.addEventListener('click',function(){
//this === p
//以下两者的修改都是等价的
this.style.color = "red";
p.style.color = "red";
},false);
$('p').click(function(){
//把p元素转化成jQuery的对象
var $this= $(this)
$this.css('color','red')
})
jquery AJAX学习
1. getJSON
var $this = $(this);
$.getJSON("http://www.imooc.com/data/sport.json",function(data){
$this.attr("disabled", "true");
$.each(data, function (index, sport) {
if(index==3)
$("ul").append("<li>" + sport["name"] + "</li>");
});
});
2.get $.get(url,[callback])
参数url为服务器请求地址,可选项callback参数为请求成功后执行的回调函数。
$.get('http://www.imooc.com/data/info_f.php', function(data) {
$this.attr("disabled", "true");
$("ul").append("<li>我的名字叫:" + data.name + "</li>");
$("ul").append("<li>男朋友对我说:" + data.say + "</li>");
}, "json");
3.post $.post(url,[data],[callback])
参数url为服务器请求地址,可选项data为向服务器请求时发送的数据,可选项callback参数为请求成功后执行的回调函数。
$.post("http://www.imooc.com/data/check_f.php",
{num:$('#txtNumber').val()},
function (data) {
$("ul").append("<li>你输入的<b> "
+ $("#txtNumber").val() + " </b>是<b> "
+ data + " </b></li>");
});
4.serialize $(selector).serialize()
其中selector参数是一个或多个表单中的元素或表单元素本身。
$('#litest').html( $('form').serialize() );
5.ajax $.ajax([settings])
其中参数settings为发送ajax请求时的配置对象,在该对象中,url表示服务器请求的路径,data为请求时传递的数据,dataType为服务器返回的数据类型,success为请求成功的执行的回调函数,type为发送数据请求的方式,默认为get。
$.ajax({
url: 'http://www.imooc.com/data/check.php',
method:'get',
dataType:'json',
data: { num: $("#txtNumber").val() },
success: function (data) {
$("ul").append("<li>你输入的<b> "
+ $("#txtNumber").val() + " </b>是<b> "
+ data + " </b></li>");
}
});
6.ajaxSetup $.ajaxSetup([options])
先调用ajaxSetup()方法设置全局的Ajax选项值,再点击两个按钮,分别使用ajax()方法请求不同的服务器数据,并将数据内容显示在页面
<script type="text/javascript">
$(function () {
$.ajaxSetup({
type: 'POST',
success:function(data){
$("ul").append("<li>你输入的<b> "
+ $("#txtNumber").val() + " </b>是<b> "
+ data + " </b></li>");
}
});
$("#btnShow_1").bind("click", function () {
$.ajax({
data: { num: $("#txtNumber").val() },
url: "http://www.imooc.com/data/check.php"
});
})
$("#btnShow_2").bind("click", function () {
$.ajax({
data: { num: $("#txtNumber").val() },
url: "http://www.imooc.com/data/check_f.php"
});
})
});
</script>
session设置及数组排序查找
今天修改信息页,要查许多人的排序,第一次登陆进去之后查询一遍,放入session中,以后就可以直接读取了。后来遇到一个问题,当换账号进来后还是之前的session,所有又把user_id加入session中,先判断user_id是否相同
if( $_SESSION['user_id'] == $member_id ){
if( $_SESSION['integral_num'] ){
$integral_num = $_SESSION['integral_num'];
}
if( $_SESSION['branch_order'] ){
$branch_order = $_SESSION['branch_order'];
}
if( $_SESSION['jiedao_order'] ){
$jiedao_order = $_SESSION['jiedao_order'];
}
}
二维数组根据某一个字段排序
$person_all = $this -> my_sort( $integral_num_all, 'member_inter', SORT_DESC );
function my_sort($arrays,$sort_key,$sort_order=SORT_ASC,$sort_type=SORT_NUMERIC ){
if(is_array($arrays)){
foreach ($arrays as $array){
if(is_array($array)){
$key_arrays[] = $array[$sort_key];
}else{
return false;
}
}
}else{
return false;
}
array_multisort($key_arrays,$sort_order,$sort_type,$arrays);
return $arrays;
}
某一个字段在二维数组中的key值
$jiedao_order = $this->deep_in_array( $member_id, $person_all );
function deep_in_array($value, $array) {
foreach($array as $key => $item) {
if(!is_array($item)) {
if ($item == $value) {
return $key;
} else {
continue;
}
}
if(in_array($value, $item)) {
return $key;
} else if($this->deep_in_array($value, $item)) {
return $key;
}
}
return false;
}
jquery全选ajax删除
1、juqery全选
全选按钮
<input type="checkbox" id="check_box" onclick="selectall('lead_id[]');"/>
列表按钮
<input name="lead_id[]" type="checkbox" value="<?php echo $value['lead_id'];?>" />
function selectall(name) {
if ($("#check_box").prop("checked")==false) {
$("input[name='"+name+"']").each(function() {
this.checked = false;
});
} else {
$("input[name='"+name+"']").each(function() {
this.checked = true;
});
}
}
2、post删除
function del_many(){
var ids='';
$("input:checkbox[name='lead_id[]']:checked").each(function(i, n){
ids += $(n).val() + ',';
});
if( ids ){
if ( confirm( '确定删除吗?' ) )
{
location.href = '?m=party_admin&c=leader_admin&a=dele_leader&leader_id=' + ids;
}
}else{
alert('请选择要删除的记录!');return false;
}
}
3、编辑信息
function edit( id ){
$.post("?m=party_admin&c=activity_admin&a=activity_info",{activity_id:id},function(msg){
var data = eval('('+msg+')');
$('#edit_activitytitle').val( data.activity_name );
$('#edit_party_name').val( data.party_name );
$("select[name ='edit_activity_type'] option[value='"+data.activity_type+"']").attr('selected','selected');
$('#edit_activity_time').val( data.activity_time );
$('#edit_activity_palce').val( data.activity_place );
$('#edit_activity_partypeople').val( data.party_should_num );
$('#edit_activity_vilpeople').val( data.villager_should_num );
$('#edit_activity_leadpeople').val( data.leader_should_num );
$('#edit_activity_content').val( data.activity_contents );
$('#edit_activity_id').val( data.activity_id );
$('#upload_pics').val( data.activity_pic );
/* 照片显示 */
if ( data.activity_pic != '' )
{
$( '#upload_pics' ).val( data.activity_pic );
}
/* 党员显示 未到 + 已到 */
var party_people_arr = data['party_people'];
var new_party_people = '';
var sign_party_people = '';
if ( party_people_arr != undefined )
{
$.each( party_people_arr, function( key, value ) {
if ( value['is_sign'] == '0' )
{
new_party_people += "<span id="+ 'not_party_id_'+ value['person_id'] +">";
new_party_people += value['person_name'];
new_party_people += "</span>";
}
else
{
sign_party_people += "<span id="+ 'party_id_'+ value['person_id'] +">";
sign_party_people += value['person_name'];
sign_party_people += "</span>";
}
});
$( '#party_not_to' ).html( new_party_people );
$( '#party_sign_name' ).html( sign_party_people );
}
/* 手机端操作 1、启用 0、关闭 2、已完成 */
var mobile_operate_msg = '';
switch( data['mobile_operate'] )
{
case '0':
mobile_operate_msg = '启动手机端操作';
$( '#button_mobile_operate' ).attr( 'onclick', 'open_mobile_operate( '+ id +' );' );
break;
case '1':
mobile_operate_msg = '手机端操作已开启';
break;
case '2':
mobile_operate_msg = '手机端操作已完成';
break;
}
$( '#mobile_operate' ).html( mobile_operate_msg );
});
$( '#determine' ).attr( 'onclick', 'edit_submit();' );
/* 开始签到的方法绑定 */
$( '#start_sign' ).attr( 'onclick', "begin_start_sign( "+ id +" );" );
}
form表单提交之前验证
今天做个弹框提交表单,信息不全时候跳转到后台检测,不符合要求返回到前台,虽然不能添加成功,但用户体验不好,所以改成提交前验证
<form class="am-form" action='' method="post" id="add_form" onsubmit="return check()" >
代码区
</form>
<script type="text/javascript">
function check(){
$meeting_name = $('#meeting_name').val();
$join = $("input[type='checkbox']").is(':checked');
if( $meeting_name == '' ){
alert('请填写会议名称');return false;
}
if( $join === false ){
alert('请选择参加人员');return false;
}
return true;
}
</script>
注意:
1.form中添加 onsubmit="return check()"
2.check()中必须有return,onsubmit认为ture或者不写都为提交,只有false才不提交
3.checkbox判断是否选中 $("input[type='checkbox']").is(':checked') 选中为ture,没选中为false
destoon 添加手机端接口
今天修改手机端接口 ,有问题困扰了很久,最后终于修改好,记录一下用到的知识
这是问题数据
parameter = "{\n \\\"typeid\\\" : 1,\n \\\"keyword\\\" : \\\"ffffgg,\U6cb9\U8102\U7c7b\U4ea7\U54c1,\U5927\U8c46\U6cb9,\U975e\U8f6c\U57fa\U56e0\U5927\U8c46\U6cb9\\\",\n \\\"typename\\\" : \\\"\\\",\n \\\"catid\\\" : \\\"82\\\",\n \\\"is_recommend\\\" : \\\"\\\",\n \\\"amount\\\" : \\\"\\\",\n \\\"unit\\\" : \\\"\\\",\n \\\"brand\\\" : \\\"\\\",\n \\\"piclist\\\" : [\n \\\"http:\\\\/\\\\/172.16.2.81:8094\\\\/file\\\\/upload\\\\/201702\\\\/18\\\\/112552420.png.thumb.png\\\"\n ],\n \\\"title\\\" : \\\"ffffgg\\\",\n \\\"price\\\" : \\\"\\\",\n \\\"totime\\\" : \\\"\\\",\n \\\"minamount\\\" : \\\"\\\",\n \\\"days\\\" : \\\"3\\\",\n \\\"elite\\\" : \\\"\\\",\n \\\"n\\\" : \\\"\\\",\n \\\"v\\\" : \\\"\\\",\n \\\"content\\\" : \\\"\\\"\n}";
这是正常数据
parameter = "{\n \"typeid\" : 1,\n \"keyword\" : \"ffffgg,\U6cb9\U8102\U7c7b\U4ea7\U54c1,\U5927\U8c46\U6cb9,\U975e\U8f6c\U57fa\U56e0\U5927\U8c46\U6cb9\",\n \"typename\" : \"\",\n \"catid\" : \"82\",\n \"is_recommend\" : \"\",\n \"amount\" : \"\",\n \"unit\" : \"\",\n \"brand\" : \"\",\n \"piclist\" : [\n \"http:\\/\\/172.16.2.81:8094\\/file\\/upload\\/201702\\/18\\/112552420.png.thumb.png\"\n ],\n \"title\" : \"ffffgg\",\n \"price\" : \"\",\n \"totime\" : \"\",\n \"minamount\" : \"\",\n \"days\" : \"3\",\n \"elite\" : \"\",\n \"n\" : \"\",\n \"v\" : \"\",\n \"content\" : \"\"\n}";
知识点:
1.$_POST,$_GET,$_COOKIE默认就被转义了,正常数据中的‘ "’就是转义后的结果,但是网站中又对转义后的数组用addslashes()再进行转义出现‘ "’,这就不对了
2.当magic_quotes_gpc = On时,系统会自动处理单引号等问题,用不用addslashes()和stripslashes()都没关系,但是如果添加数据时用了addslashes(),那么显示数据时必须要stripslashes()
3.当magic_quotes_gpc = Off时,系统不会处理单引号等问题,所以插入数据时必须要使用addslashes(),显示数据时则不需要使用stripslashes()。
代码
//提交数据,或者变量准备:
$Content=addslashes(”这里面是数据,不管有没单引号或者还是变量”);
//插入数据到数据库,代码省略
//开始显示数据
$Content=”从数据库读取的数据”;
if(get_magic_quotes_gpc()){
$Content=stripslashes($Content);
}
echo $Content;
辅助:
1、PHPinfo();
2、
if(DT_DEBUG) {
error_reporting( E_ALL ^ E_NOTICE );
$mtime = explode(' ', microtime());
$debug_starttime = $mtime[1] + $mtime[0];
} else {
error_reporting(0);
}
3、file_put_contents( '1.txt' , var_export( $data, true ).PHP_EOL, FILE_APPEND);
4、$str = base64_decode(str_replace(" ","+",$_GET['str']));
php与ajax组合使页面下拉刷新
下拉刷新其实就是下拉一定高度,调用ajax去控制器获取数据,将返回来的json数据用js追加到页面相应位置
$(function(){
var winH = $(window).height(); //页面可视区域高度
var i; //设置当前页数
i = $('#cur_pages').val();
$(window).scroll(function () {
var pageH = $(document.body).height();
var scrollT = $(window).scrollTop(); //滚动条top
var aa = (pageH-winH-scrollT)/winH;
if(aa<0.02){
$.getJSON("{WEB_PATH}/index/cloud_goods/ajax_cloud_goods_l",{page:i},function(json){
if(json){
var str = "";
$.each(json,function(index,array){
$('#ulRecommend').append(
'<li id="16973">'+
'<div class="f_bor_tr">'+
'<div class="m-tj-pic">'+
'<a href="{WEB_PATH}/cgoods/'+array.id+'" class="u-lott-pic">'+
'<img src="{G_UPLOAD_PATH}/'+array.g_thumb+'" border=0 alt="'+array.g_title+'" />'+
'</a>'+
'<ins class="u-promo">价值:'+array.g_money+'购买币</ins>'+
'</div>'+
'<div class="Progress-bar">'+
'<p class="title_cut" style="padding-bottom:5px"><span>'+array.g_title+'</span></p>'+
'<p class="u-progress" title="已完成">'+
'<span class="pgbar" style="width:0%;">'+
'<span class="pging"></span>'+
'</span></p>'+
'<ul class="Pro-bar-li">'+
'<li class="P-bar01"><em>'+array.canyurenshu+'</em>已参与</li>'+
'<li class="P-bar02"><em>'+array.zongrenshu+'</em>总需人次</li>'+
'<li class="P-bar03"><em>'+(array.zongrenshu - array.canyurenshu) +'</em>剩余</li>'+
'</ul></div></div></li>'
);
});
i++;
$('#cur_pages').val( i );
}else{
$("#nodata").show().html("别滚动了,已经到底了。。。");
return false;
}
});
}
});
});
注意:
[1] 页面要有一个保存当前页数的input隐藏域
[2] 返回来的数组用$.each(json,function(index,array),其中json是返回来的json数组,index是key值,array是value,后面要用的字段直接用array.canyurenshu即可
[3] 追加写法要注意,一行中用单引号引起来,后面用‘+‘连接,变量写法为'+array.canyurenshu+'
修改项目中的信息,实时访问cdn刷新缓存
今天做一个访问阿里云api刷新缓存的功能,开始想找sdk的,但是没找到,只有一个个方法找,其实改好了发现也不是难的。
### 请求参数
function setParameter($specialParameter){
$time = date('Y-m-d H:i:s', time()-8*60*60);//北京时间转换为UTC时间
$var = strtr($time, ' ', 'T');
$Timestamp = $var . 'Z';
$signature_nonce = '';
for($i =0 ; $i < 14; $i++){
$signature_nonce .= mt_rand(0,9);
}
$publicParameter = array(
'Format' => 'JSON',
'Version' => '2014-11-11',
'SignatureMethod' => 'HMAC-SHA1',
'TimeStamp' => $Timestamp,
'SignatureVersion' => '1.0',
'SignatureNonce' => $signature_nonce,
'ObjectType' => 'File'
);
$parameter = array_merge($publicParameter, $specialParameter);
return $parameter;
}
将参数排序并添加$signature
function getStringToSign($parameter,$access_key_secret){
ksort($parameter);
foreach($parameter as $key => $value){
$str[] = rawurlencode($key). "=" .rawurlencode($value);
}
$ss = "";
if(!empty($str)){
for($i=0; $i<count($str); $i++){
if(!isset($str[$i+1])){
$ss .= $str[$i];
}else{
$ss .= $str[$i]."&";
}
}
}
$StringToSign = "GET" . "&" . rawurlencode("/") . "&" . rawurlencode($ss);
$signature = base64_encode(hash_hmac("sha1", $StringToSign, $access_key_secret."&", true));
$url = "https://cdn.aliyuncs.com/?" . $ss . "&Signature=" . $signature;
return $url;
}
curl访问
function curl_get($url){
$ch = curl_init();
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE); // https请求 不验证证书和hosts
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE);
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); // 要求结果为字符串且输出到屏幕上
curl_setopt($ch, CURLOPT_HEADER, 0); // 不要http header 加快效率
curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (compatible; MSIE 5.01; Windows NT 5.0)');
curl_setopt($ch, CURLOPT_TIMEOUT, 15);
$output = curl_exec($ch);
curl_close($ch);
return $output;
}
调用函数
function describeCdnService( $url_show, $action = 'RefreshObjectCaches' ){
$access_key_id = ACCESS_ID;
$access_key_secret = ACCESS_SECRET;
if(empty($access_key_id) || empty($access_key_secret)){
$message = array(
'status' => 'failed',
'reason' => 'Access key Id or access key secret is invalid',
);
return json_encode($message);
}
$specialParameter = array(
'AccessKeyId' => $access_key_id,
'Action' => $action,
'ObjectPath' => $url_show,
);
$parameter = setParameter( $specialParameter );
$url = getStringToSign( $parameter, $access_key_secret );
$ret = curl_get( $url );
return $ret;
}
最后这个函数就是项目要调用的,此方法调用上面的三个方法
$url = DT_URL.'sell/show-'. $itemid .'.html';
describeCdnService( $url );
大功告成