php技术博客
让天下没有搞不定的bug~

thinkphp版本登录后uploadify上传flash上传时出现302

php版本登录后uploadify上传flash上传时出现302,声明一下:我是采用thinkphp3.2版本进行程序开发。

如果您的程序是jsp还是asp,变通一下就可以了,就是后端验证的时候,还有js传值uploader有所不同,传值请看代码加粗部分!

由于flash版本的原因,uploadify中的flash调用的时候未保存用户的session,所以导致访问资源的时候回提示未获取到资源的访问权限。插件会弹出302错误的提示,具体代码如下:

<script type=”text/javascript”>
$(function(){
//上传头像(uploadify插件)
$(“#user-pic”).uploadify({
‘queueSizeLimit’ : 1,
‘removeTimeout’ : 0.5,
‘preventCaching’ : true,
‘multi’ : false,
‘swf’ : ‘/Public/Tools/avatar/js/uploadify-v3.1/uploadify.swf’,
‘uploader’ : ‘{:U(“Member/Index/uploadImg”)}&member_tel=<?php echo $_COOKIE[‘member_tel’]?>&member_pwd=<?php echo $_COOKIE[‘member_pwd’]?>‘,
‘buttonText’ : ‘<i class=”userup-icon”></i>上传头像’,
‘width’ : ‘200’,
‘height’ : ‘200’,
‘fileTypeExts’ : ‘*.jpg; *.png; *.gif;’,
//’scriptData’: { ‘session’: ‘<?php echo session_id();?>’},
‘onUploadSuccess’ : function(file, data, response){

var data = $.parseJSON(data);

//alert(data[‘status’]);return false;

if(data[‘status’] == 0){
$.ThinkBox.error(data[‘info’],{‘delayClose’:3000});
return;
}
var preview = $(‘.upload-area’).children(‘#preview-hidden’);
preview.show().removeClass(‘hidden’);
//两个预览窗口赋值
$(‘.crop’).children(‘img’).attr(‘src’,data[‘data’]+’?random=’+Math.random());
//隐藏表单赋值
$(‘#img_src’).val(data[‘data’]);
//绑定需要裁剪的图片
var img = $(‘<img />’);
preview.append(img);
preview.children(‘img’).attr(‘src’,data[‘data’]+’?random=’+Math.random());
var crop_img = preview.children(‘img’);
crop_img.attr(‘id’,”cropbox”).show();
var img = new Image();
img.src = data[‘data’]+’?random=’+Math.random();
//根据图片大小在画布里居中
img.onload = function(){
var img_height = 0;
var img_width = 0;
var real_height = img.height;
var real_width = img.width;
if(real_height > real_width && real_height > 200){
var persent = real_height / 200;
real_height = 200;
real_width = real_width / persent;
}else if(real_width > real_height && real_width > 200){
var persent = real_width / 200;
real_width = 200;
real_height = real_height / persent;
}
if(real_height < 200){
img_height = (200 – real_height)/2;
}
if(real_width < 200){
img_width = (200 – real_width)/2;
}
preview.css({width:(200-img_width)+’px’,height:(200-img_height)+’px’});
preview.css({paddingTop:img_height+’px’,paddingLeft:img_width+’px’});
}
//裁剪插件
$(‘#cropbox’).Jcrop({
bgColor:’#333′, //选区背景色
bgFade:true, //选区背景渐显
fadeTime:1000, //背景渐显时间
allowSelect:false, //是否可以选区,
allowResize:true, //是否可以调整选区大小
aspectRatio: 1, //约束比例
minSize : [100,100],//可选最小大小
boxWidth : 200, //画布宽度
boxHeight : 200, //画布高度
onChange: showPreview,//改变时重置预览图
onSelect: showPreview,//选择时重置预览图
setSelect:[ 0, 0, 100, 100],//初始化时位置
onSelect: function (c){ //选择时动态赋值,该值是最终传给程序的参数!
$(‘#x’).val(c.x);//需裁剪的左上角X轴坐标
$(‘#y’).val(c.y);//需裁剪的左上角Y轴坐标
$(‘#w’).val(c.w);//需裁剪的宽度
$(‘#h’).val(c.h);//需裁剪的高度
}
});
//提交裁剪好的图片
$(‘.save-pic’).click(function(){
if($(‘#preview-hidden’).html() == ”){
$.ThinkBox.error(‘请先上传图片!’);
}else{
//由于GD库裁剪gif图片很慢,所以长时间显示弹出框
$.ThinkBox.success(‘图片处理中,请稍候……’,{‘delayClose’:30000});
$(‘#pic’).submit();
}
});
//重新上传,清空裁剪参数
var i = 0;
$(‘.reupload-img’).click(function(){
$(‘#preview-hidden’).find(‘*’).remove();
$(‘#preview-hidden’).hide().addClass(‘hidden’).css({‘padding-top’:0,’padding-left’:0});
});
},
});
//预览图
function showPreview(coords){
var img_width = $(‘#cropbox’).width();
var img_height = $(‘#cropbox’).height();
//根据包裹的容器宽高,设置被除数
var rx = 100 / coords.w;
var ry = 100 / coords.h;
$(‘#crop-preview-100’).css({
width: Math.round(rx * img_width) + ‘px’,
height: Math.round(ry * img_height) + ‘px’,
marginLeft: ‘-‘ + Math.round(rx * coords.x) + ‘px’,
marginTop: ‘-‘ + Math.round(ry * coords.y) + ‘px’
});
rx = 60 / coords.w;
ry = 60 / coords.h;
$(‘#crop-preview-60’).css({
width: Math.round(rx * img_width) + ‘px’,
height: Math.round(ry * img_height) + ‘px’,
marginLeft: ‘-‘ + Math.round(rx * coords.x) + ‘px’,
marginTop: ‘-‘ + Math.round(ry * coords.y) + ‘px’
});
}
})

</script>

后端登录验证的地方:

$account = $_COOKIE[‘member_tel’]?$_COOKIE[‘member_tel’]:$_REQUEST[‘member_tel’];
$pwd = $_COOKIE[‘member_pwd’]?$_COOKIE[‘member_pwd’]:$_REQUEST[‘member_pwd’];
$Model = D(‘Member/Member’);
$rs = $Model->CheckMember($account,$pwd);
if($rs){return true;}else{return false;}

这样验证的,就是说提交的之前是需要验证的,所以,不论你使用session还是cookie,变通一下就可以了,有不懂的问题可以留言讨论。

赞(0)
未经允许不得转载:PHP技术博客 » thinkphp版本登录后uploadify上传flash上传时出现302